./
├── im11
│ ├── __init__.py
│ ├── m1.py
│ ├── m2.py
├── im11.py
└── setup.py
__init__.py пустой, содержит переменные для setup.py.
im11.py
#!/usr/bin/env python3 import im11.m2 im11.m2.m2_show()
m1.py
def m1_show(): print('m1.show')
m2.py
import im11.m1 def m2_show(): im11.m1.m1_show() print('m2.show')
setup.py
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...
Как видно установка прошла успешно. Создан нужный файл /usr/local/bin/im11.py. Пытаюсь проверить работу
$ 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
Ммм….Что не так-то???
Я сравнил вывод sys.path из скрипта и через консоль python:
скрипт
['/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']
Разница только в sys.path(0), ну так и должно быть…
tmp/pip-4b1kou8v-build/setup.py