Я был в этом в течение дня и не нашел решения. Мой проект python очень глубокий, и некоторые из модулей должны запускаться независимо (флаг no -m, без относительного импорта). По этой причине мы решили добавить корневую папку в PYTHONPATH. Я запускаю OSX 10.11.3. Все прошло гладко до вчерашнего дня. Я мог запускать независимые модули из терминала без проблем в обоих версиях Python 2.7 и 3.5. Вчера, не изменяя мой PYTHONPATH или любой другой параметр среды, под управлением любой из этих независимых модулей от терминала теперь дает мне ошибки импорта в обоих Python 2 и 3.
Вот мое рабочее дерево:
/Users/sintrafico/Documents/code/central_maestra
- reports_server.py
- api_server.py
- sintrafico
- sql
- SQLConnection
- api
- incident
- csv (not package)
- independent_module
- tests
Вчера я тестировал свои тесты без проблем, но теперь я не могу.
Python 2 python csv/independent_module.py
дает ошибку:
Traceback (most recent call last):
File "csv/independent_module.py", line 13, in <module>
from sintrafico.sql import SQLConnection
ImportError: No module named sintrafico.sql
Python 3 python3 csv/independent_module.py
дает ошибку:
Traceback (most recent call last):
File "csv/create_bemobile_csv.py", line 13, in <module>
from sintrafico.sql import SQLConnection
ImportError: No module named 'sintrafico'
В папке инцидента, вчера эта команда работает отлично: coverage run -m unittest discover
. Теперь все тесты терпят неудачу, потому что ImportError: No module named 'reports_server'
.
С тех пор, как это началось вчера, я возился с моим PYTHONPATH. Я оставил это поле пустым, и он не работает (как и ожидалось), я добавил путь Теперь несколько способов:
export PYTHONPATH=“${PYTHONPATH}:/Users/sintrafico/Documents/code/central_maestra"
export PYTHONPATH=“/Users/sintrafico/Documents/code/central_maestra:${PYTHONPATH}"
export PYTHONPATH=“${PYTHONPATH}:/Users/sintrafico/Documents/code/central_maestra/"
export PYTHONPATH=“/Users/sintrafico/Documents/code/central_maestra:${PYTHONPATH}"
И также устанавливая его, не добавляя PYTHONPATH, поскольку он был пуст для начала. Я несколько раз перезапускал свой компьютер без каких-либо успехов. Также обратите внимание, что у меня есть .bash_profile и .bashrc со следующим содержанием:
# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
export PATH
PYTHONPATH=“/Users/sintrafico/Documents/code/central_maestra:${PYTHONPATH}“
export PYTHONPATH
И, наконец, какие ошибки меня не больше всего, что если я запускаю тесты внутри PyCharm они все бегут и проходят, я не импорт ошибки вообще.
Вы пытались установить путь без кавычек и фигурных скобок? Возможно, вы устанавливаете путь python как строковое представление пути. –
У меня нет, я попробую прямо сейчас. Спасибо – gamda
@JaseRieger большое вам спасибо! Вот и все. Coverage и Python могут снова запускать тесты с терминала, и я могу запускать независимые модули. Я не уверен, почему это произошло, так как я не модифицировал файлы .bash примерно через неделю, поэтому я предположил, что это не проблема. – gamda