Форум сайта python.su
Возможно, избитая тема, но все же.
Имеем следующую файловую структуру:
src\
__init__.py
main.py
src\test\
__init__.py
eggs.py
src\gui\
__init__.py
spam.py
x=2
from test.eggs import x
print x
import gui.spam
from ..test.eggs import x
if __name__ == "__main__":
import sys, os
sys.path.append(os.path.normpath(
os.path.join(os.getcwd(), '..', 'test')))
from eggs import x
else:
from test.eggs import x
print x
Офлайн
Откройте для себя setup.py
Офлайн
Андрей СветловРегулярно пользуюсь им. Можно поконкретнее?
Откройте для себя setup.py
Офлайн
> Регулярно пользуюсь им.
Ага, ага, верю :-).
Не работайте с пакетами и модулями как с файлами, работайте с ними как с пакетами и модулями.
>> python -c“import src.main”
>> python -c“import src.gui.spam”
Посмотрите virtualenv, научитесь из своего кода делать дистрибутивы (этот самый setup.py, “Distributing Python Modules” в справке, setuptools, distibute и пр.), всё сведётся к:
Один раз:
$ virtualenv –distribute myenv
$ . myenv/bin/activate
$ cd myenv/myproject && python setup.py develop
И дальше только:
$ myenv/myproject/bin/mycoolscript –mycoolarg1 –mycoolarg2
$ myenv/myproject/bin/mycoolscript –mycoolarg3
$ myenv/myproject/bin/mycoolscript –mycoolarg4
Или:
$ . myenv/myproject/bin/activate
$ mycoolscript –mycoolarg1 –mycoolarg2
$ mycoolscript –mycoolarg3
$ mycoolscript –mycoolarg4
p.s. “src” это плохое имя для пакета (в контексте “import src.gui.spam” ;-).
p.p.s. К тому же, что это за “выполнить python spam.py”, откуда выполнить? Мы знаем, как Python ищет и находит пакеты/модули? Мы ведь понимаем что то, какая сейчас (при передаче скрипта интерпретатору) директория является текущей играет таки роль при поиске пакетов/модулей этим интерпретатором?
..bw
Отредактировано (Июль 9, 2011 06:59:19)
Офлайн
bwЛадно, я использую setup.py для целей py2exe.
> Регулярно пользуюсь им.
Ага, ага, верю :-).
I:\WorkDir\workspace\Test>virtualenv.py --python=C:\Python27\python.exe --distribute testenv
I:\WorkDir\workspace\Test>testenv\Scripts\activate.bat
? setup
I:\WorkDir\workspace\Test>cd src
? I:\WorkDir\workspace\Test\src>foo.py
Офлайн
> всякий раз
Один раз.
Ну и любой запуск из среды потребует либо указание пути к python в этой среде, либо использование activate. Хотя под виндой такой хернёй не страдал, давно ей не пользуюсь.
Поищи в сети. И скажи твой уровень (опыт) работы с языком и вообще в программировании. Это я к тому, что просто посыл тебя ключевыми словами не работает, тебя нужно другими словами посылать :-).
Покажи мне свой псевдопроект (максимально упрощённый, но так же не работающий) (мылом или ещё где выложи в архив). Я оформлю как следует, может так будет тебе проще понять.
..bw
Офлайн
bwА, ну это здорово. Мне винда/не винда не суть. Есть машины и с виндой и с линуксом, но
Один раз.
Ну и любой запуск из среды потребует либо указание пути к python в этой среде, либо использование activate. Хотя под виндой такой хернёй не страдал, давно ей не пользуюсь.
bwПосле того, как меня последний раз так послали, я пробежал пару марафонов ;)
Поищи в сети. И скажи твой уровень (опыт) работы с языком и вообще в программировании. Это я к тому, что просто посыл тебя ключевыми словами не работает, тебя нужно другими словами посылать :-).
bwНасчет “так же не работающий”… ну я не знаю как написать __не__
Покажи мне свой псевдопроект (максимально упрощённый, но так же не работающий) (мылом или ещё где выложи в архив). Я оформлю как следует, может так будет тебе проще понять.
Отредактировано (Июль 13, 2011 00:19:57)
Офлайн