将本地 python 模块添加到 IntelliJ 中的类路径
Add local python module to the classpath in IntelliJ
我正在尝试从 IntelliJ Ultimate 2018.1 run/debug 我的 python 项目。我已经定义了一个 python SDK,一个 Django 本地服务器(因为项目使用 Django 作为模板语言),正确定义了 PYTHONPATH 等。如果我执行
python manage.py runserver
从我的 MacOS 终端,服务器正常启动。
当我尝试 运行 我的 IntelliJ 配置时,它失败了,并显示消息:
/usr/bin/python2.7 -d /Users/my_user/dev/github/my_project/manage.py runserver 8000
Traceback (most recent call last):
File "/Users/my_user/dev/github/my_project/manage.py", line 19, in <module>
paths = importlib.import_module('settings.' + server + '.paths')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/my_user/dev/github/my_project/settings/__init__.py", line 11, in <module>
paths = importlib.import_module('my_project.settings.' + server + '.paths')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named my_project.settings.local.paths
settings.local
文件夹确实包含 __init__.py
文件,还有 settings
文件夹和我的项目的根文件夹。
通过互联网做了几个小时的研究,我意识到主要问题是在类路径中包含本地模块,因此它们可用于服务器启动。例如,对于 PyCharm,here, and I was able to run the server from PyCharm. However, when trying to do the same thing in IntelliJ, this never works. Some people write about it here 已经清楚地解释了这一点,但这对我来说并不奏效。
我试过使用系统解释器和虚拟环境,都是用 PyCharm 创建的,但没有成功。我正在使用 python 2.7、Django 1.11 和 MacOS High Sierra。这甚至可以用 IntelliJ 实现吗?我想知道如果使用 IntelliJ 可以完成相同的事情(以及更多),人们为什么会购买 PyCharm。另外,我注意到当我更改 IntelliJ 运行 配置文件(Django 本地服务器配置文件)中的设置时,此更改会反映回 PyCharm 中,反之亦然。在我看来,这就像是 JetBrains 的一个错误,因为两个不同的应用程序以某种方式共享相同的配置,这可能是因为两个应用程序中加载了相同的项目。
问题实际上是微不足道的,正如 JetBrains 支持所阐明的那样:我需要将 my_project
的父文件夹设置为内容根目录 (/Users/my_user/dev/github/
),而不是使用 /Users/my_user/dev/github/my_project/
直接地。这是必需的,因为源代码包含无法解析的模块 my_project
的导入,因为我的主项目文件夹中没有子文件夹 my_project
。我在 Project settings -> Modules
视图、Project settings -> Facets
视图以及 运行 配置中实施了此更改。
我正在尝试从 IntelliJ Ultimate 2018.1 run/debug 我的 python 项目。我已经定义了一个 python SDK,一个 Django 本地服务器(因为项目使用 Django 作为模板语言),正确定义了 PYTHONPATH 等。如果我执行
python manage.py runserver
从我的 MacOS 终端,服务器正常启动。 当我尝试 运行 我的 IntelliJ 配置时,它失败了,并显示消息:
/usr/bin/python2.7 -d /Users/my_user/dev/github/my_project/manage.py runserver 8000
Traceback (most recent call last):
File "/Users/my_user/dev/github/my_project/manage.py", line 19, in <module>
paths = importlib.import_module('settings.' + server + '.paths')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/my_user/dev/github/my_project/settings/__init__.py", line 11, in <module>
paths = importlib.import_module('my_project.settings.' + server + '.paths')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named my_project.settings.local.paths
settings.local
文件夹确实包含 __init__.py
文件,还有 settings
文件夹和我的项目的根文件夹。
通过互联网做了几个小时的研究,我意识到主要问题是在类路径中包含本地模块,因此它们可用于服务器启动。例如,对于 PyCharm,here, and I was able to run the server from PyCharm. However, when trying to do the same thing in IntelliJ, this never works. Some people write about it here 已经清楚地解释了这一点,但这对我来说并不奏效。
我试过使用系统解释器和虚拟环境,都是用 PyCharm 创建的,但没有成功。我正在使用 python 2.7、Django 1.11 和 MacOS High Sierra。这甚至可以用 IntelliJ 实现吗?我想知道如果使用 IntelliJ 可以完成相同的事情(以及更多),人们为什么会购买 PyCharm。另外,我注意到当我更改 IntelliJ 运行 配置文件(Django 本地服务器配置文件)中的设置时,此更改会反映回 PyCharm 中,反之亦然。在我看来,这就像是 JetBrains 的一个错误,因为两个不同的应用程序以某种方式共享相同的配置,这可能是因为两个应用程序中加载了相同的项目。
问题实际上是微不足道的,正如 JetBrains 支持所阐明的那样:我需要将 my_project
的父文件夹设置为内容根目录 (/Users/my_user/dev/github/
),而不是使用 /Users/my_user/dev/github/my_project/
直接地。这是必需的,因为源代码包含无法解析的模块 my_project
的导入,因为我的主项目文件夹中没有子文件夹 my_project
。我在 Project settings -> Modules
视图、Project settings -> Facets
视图以及 运行 配置中实施了此更改。