У меня такое ощущение, что я упустил какой-то момент здесь, а googling не достал меня далеко.python setuptools точка входа сценарий не может найти модуль
Я использую setuptools
для сценария командной строки. Все идет хорошо, но после установки мои собственные файлы не «видны» автоматически сгенерированным скриптом начальной точки. Представьте себе следующий случай:
файл a.py
содержит:
a = 12
файл __main__.py
содержит:
from a import a
def main():
print(a)
if __name__ == '__main__':
main()
файл __init__.py
пуст. Файл setup.py
содержит:
from setuptools import setup, find_packages
setup(
name='tep',
packages=find_packages(),
version='0.0.1',
entry_points={
'console_scripts': [
'tep = tep.__main__:main'
]
},
)
все правильно расположены в структуре каталогов:
- test_entry_point
- теп
- __init__.py
- __main__.py
- a.py
- setup.py
- теп
Локально все работает хорошо. Но после установки:
sudo -H python setup.py install
и вызов из другой оболочки, либо с помощью tep
или с помощью python -m tep
, я получаю следующее сообщение об ошибке:
ImportError: No module named 'a'
Так файл a.py
не виден в объеме после монтаж . Есть идеи?
спасибо.
Hi. к сожалению, это не работает. Это даже прекращает работу локального вызова. например 'python tep/__ main __. py' приводит к' ImportError: нет модуля с именем 'tep''. Сохраняя его как в исходном сообщении, работает локальный вызов, но модуль не найден * после * установки. – xaratustra
@xaratustra Hm, не может воспроизвести проблему или локальный вызов ни после установки в качестве пакета. Когда вы тестируете, вы всегда находитесь в 'test_entry_point' (т. Е. Каталог, содержащий' tep' subdir)? Вы используете 'virtualenv'? – vrs
@xaratustra также, я не знаю, используете ли вы 'PYTHONPATH' и как выглядят ваши' sudoers', поэтому проверьте, могут ли они как-то вызвать проблему, поскольку вы используете 'sudo -H' для установки вашего пакета. Попробуйте 'sudo -H python -m tep', чтобы узнать, изменит ли это поведение. – vrs