Тот же код не работает в PyCharm, но работает вне PyCharm - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь запустить пример google ortools в PyCharm и получил следующие ошибки:

/Users/edamame/project/ortools/simple_program.py
Traceback (most recent call last):
  File "/Users/edamame/project/ortools/simple_program.py", line 3, in <module>
    from ortools.linear_solver import pywraplp
ModuleNotFoundError: No module named 'ortools.linear_solver'

Process finished with exit code 1

Однако, если я запускаю тот же код вне PyCharm (в соответствующем проекте venv), он работаетштраф:

(venv) edamame$ pwd
/Users/edamame/project/ortools/
(venv) edamame$ python simple_program.py 
Solution:
Objective value =  4.0
x =  1.0
y =  1.0

Затем я попытался напечатать ниже в обоих случаях:

import sys
print('\n'.join(sys.path))

Выводы:

В PyCharm:

/Users/edamame/project/venv/bin/python
/Users/edamame/project/ortools/so_example.py
/Users/edamame/project/ortools
/Users/edamame/project
/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload
/Users/edamame/project/venv/lib/python3.6/site-packages
/Users/edamame/project/venv/lib/python3.6/site-packages/setuptools-39.1.0-py3.6.egg
/Users/edamame/project/venv/lib/python3.6/site-packages/pip-10.0.1-py3.6.egg

За пределами PyCharm:

(venv) edamame$ python so_example.py 
/Users/edamame/project/ortools
/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload
/Users/edamame/project/venv/lib/python3.6/site-packages
/Users/edamame/project/venv/lib/python3.6/site-packages/setuptools-39.1.0-py3.6.egg
/Users/edamame/project/venv/lib/python3.6/site-packages/pip-10.0.1-py3.6.egg

Они кажутся одинаковыми, хотя ... не уверен, в чем может быть проблема ...

Как заставить тот же код работать в PyCharm?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

У вас есть конфликт пространства имен между пользовательским пакетом ortools и установленным.PyCharm добавляет корень проекта (/Users/edamame/project) к PYTHONPATH по умолчанию и вызывает проблему.

Либо переименуйте свой пользовательский пакет ortools, либо отключите Добавление корней содержимого в параметр PYTHONPATH в выделенной конфигурации запуска в PYCharm.

0 голосов
/ 22 ноября 2018

env var PYTHONPATH имеет значение.В обеих ситуациях выведите значение sys.path:

import sys
print('\n'.join(sys.path))

. В bash может оказаться полезным ввести venv, а затем $ open /Applications/PyCharm.app (или как там его называют на Mac).Тогда бегущий пичарм унаследует PYTHONPATH от bash.

Вот другой подход.В Pycharm введите CMD-, (команда запятая) для предпочтений, найдите структуру проекта, щелкните правой кнопкой мыши папку edamame / project и выберите alt-S Sources.Это добавит папку к вашему пути в Pycharm.Опять же, используйте print(), чтобы убедиться, что sys.path содержит то, что вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...