Форум сайта python.su
0
Есть пакет
./
├── im11
│ ├── __init__.py
│ ├── m1.py
│ ├── m2.py
├── im11.py
└── setup.py
#!/usr/bin/env python3 import im11.m2 im11.m2.m2_show()
def m1_show(): print('m1.show')
import im11.m1 def m2_show(): im11.m1.m1_show() print('m2.show')
from setuptools import setup import im11 setup( name='im11', version=im11.__version__, author=im11.__author__, author_email=im11.__email__, url='www.com', packages=['im11'], scripts=['im11.py'] )
python3 setup.py sdist .... sudo pip3 install dist/<tar.gz> ....
$ sudo pip3 -v install dist/im11-0.0.1.tar.gz Unpacking ./dist/im11-0.0.1.tar.gz Running setup.py (pathtmp/pip-4b1kou8v-build/setup.py) egg_info for package from file
//home/k0st1an/develop/testutils/python/path_import/dist/im11-0.0.1.tar.gz running egg_info creating pip-egg-info/im11.egg-info writing dependency_links to pip-egg-info/im11.egg-info/dependency_links.txt writing pip-egg-info/im11.egg-info/PKG-INFO writing top-level names to pip-egg-info/im11.egg-info/top_level.txt writing manifest file 'pip-egg-info/im11.egg-info/SOURCES.txt' warning: manifest_maker: standard file '-c' not found reading manifest file 'pip-egg-info/im11.egg-info/SOURCES.txt' writing manifest file 'pip-egg-info/im11.egg-info/SOURCES.txt' Installing collected packages: im11 Running setup.py install for im11 running install running build running build_py creating build creating build/lib creating build/lib/im11 copying im11/m1.py -> build/lib/im11 copying im11/__init__.py -> build/lib/im11 copying im11/m2.py -> build/lib/im11 running build_scripts creating build/scripts-3.5 copying and adjusting im11.py -> build/scripts-3.5 changing mode of build/scripts-3.5/im11.py from 644 to 755 running install_lib creating /usr/local/lib/python3.5/dist-packages/im11 copying build/lib/im11/m1.py -> /usr/local/lib/python3.5/dist-packages/im11 copying build/lib/im11/__init__.py -> /usr/local/lib/python3.5/dist-packages/im11 copying build/lib/im11/m2.py -> /usr/local/lib/python3.5/dist-packages/im11 byte-compiling /usr/local/lib/python3.5/dist-packages/im11/m1.py to m1.cpython-35.pyc byte-compiling /usr/local/lib/python3.5/dist-packages/im11/__init__.py to __init__.cpython-35.pyc byte-compiling /usr/local/lib/python3.5/dist-packages/im11/m2.py to m2.cpython-35.pyc running install_egg_info running egg_info writing top-level names to im11.egg-info/top_level.txt writing dependency_links to im11.egg-info/dependency_links.txt writing im11.egg-info/PKG-INFO warning: manifest_maker: standard file '-c' not found reading manifest file 'im11.egg-info/SOURCES.txt' writing manifest file 'im11.egg-info/SOURCES.txt' Copying im11.egg-info to /usr/local/lib/python3.5/dist-packages/im11-0.0.1.egg-info running install_scripts copying build/scripts-3.5/im11.py -> /usr/local/bin changing mode of /usr/local/bin/im11.py to 755 writing list of installed files to '/tmp/pip-98yjq7ma-record/install-record.txt' Successfully installed im11 Cleaning up...
$ im11.py Traceback (most recent call last): File "/usr/local/bin/im11.py", line 3, in <module> import im11.m2 File "/usr/local/bin/im11.py", line 3, in <module> import im11.m2 ImportError: No module named 'im11.m2'; 'im11' is not a package
$ python3 Python 3.5.0+ (default, Oct 11 2015, 09:05:38) [GCC 5.2.1 20151010] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import im11.m2 >>> im11.m2.m2_show() m1.show m2.show
['/usr/local/bin', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
>>> sys.path ['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
Отредактировано k0st1an (Дек. 17, 2015 22:31:27)
Офлайн
0
А вот этот скрипт из домашнего каталога работает на ура
$ ./t.py ['/home/k0st1an', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages'] m1.show m2.show
#!/usr/bin/python3.5 import sys print(sys.path) import im11.m2 im11.m2.m2_show()
$ t.py ['/usr/local/bin', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages'] ['/usr/local/bin', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages'] Traceback (most recent call last): File "/usr/local/bin/t.py", line 6, in <module> import im11.m2 File "/usr/local/bin/im11.py", line 6, in <module> import im11.m2 ImportError: No module named 'im11.m2'; 'im11' is not a package
Офлайн
0
Имя скрипта было такое же как модуля….. Так делать не надо. Дурдом… Совсем вылетело из головы.
Офлайн
221
Возможно стоит принять общую практику и пакет обозначить как библиотеку, для чего в названии часто применяют суффикс “lib”.
Офлайн
0
Хорошая идея.
Офлайн