【问题标题】:Pycharm IDE can't run scripts when importing modulesPycharm IDE 导入模块时无法运行脚本
【发布时间】:2021-12-29 01:40:25
【问题描述】:

我在我的 Django 项目 Finchin 中有一个脚本 pycharm_test.py 在我的 django 应用程序 universe 中,它从我自己的应用程序和来自第三方 stellar_sdk 的一些其他模块导入 Cashpool

# /Users/jonas/PycharmProjects/Finchin/apps/universe/pycharm_test.py

import sys
sys.path.append("/Users/jonas/PycharmProjects/Finchin")

from apps.cashpool.models import Cashpool  # doesn't work

from stellar_sdk.asset import Asset  # works
from stellar_sdk.keypair import Keypair  # works

def test():
    print('test')

test()

现在,当我使用 rightclick/run 'pycharm_test' 在 Pycharm 中运行此脚本时,它会引发

/Users/jonas/PycharmProjects/Finchin/venv/bin/python /Users/jonas/PycharmProjects/Finchin/apps/universe/pycharm_test.py
Traceback (most recent call last):
  File "/Users/jonas/PycharmProjects/Finchin/apps/universe/pycharm_test.py", line 1, in <module>
    from apps.cashpool.models import Cashpool
ModuleNotFoundError: No module named 'apps.cashpool'; 'apps' is not a package

注意:当我删除 from apps.cashpool.models import Cashpool 时,脚本会正常运行。所以不知何故 stellar_sdk 导入工作。

当我尝试时

..
from cashpool.models import Cashpool
..

上升

django.core.exceptions.ImproperlyConfigured:请求设置 INSTALLED_APPS,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。

This 没有帮助,我检查了以下内容:

  • 所有目录都有一个__init__.py
  • 所有应用都包含在settings.py
  • 系统路径看起来令人满意
  • 解释器链接到 venv
# settings.py

from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# print(sys.path)

['/Users/jonas/PycharmProjects/Finchin/apps/universe',
 '/opt/homebrew/Cellar/python@3.9',
 '/Users/jonas/PycharmProjects/Finchin/apps',
 '/Users/jonas/PycharmProjects/Finchin',
 '/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_display',
 '/opt/homebrew/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python39.zip',
 '/opt/homebrew/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9',
 '/opt/homebrew/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload',
 '/Users/jonas/PycharmProjects/Finchin/venv/lib/python3.9/site-packages',
 '/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_matplotlib_backend']

目录:

Venv 解释器:

运行配置:

操作系统外壳

【问题讨论】:

  • Python 路径设置不正确。为了让它工作,包含“apps”的目录必须在sys.path。你当然可以在那里添加它,只要你知道如何到达那里,比如“../..”。
  • @TimRoberts 谢谢,我如何将它添加到 Mac OS 上的 sys.path 中?
  • 操作系统无关紧要。你只需做import sys / sys.path.append( ... )
  • @TimRoberts 谢谢,我将它包含在我的模块中并收到相同的错误。我是否必须附加包含相对于模块的“应用程序”的 url?
  • 您不需要其他行,只需要以“Finchin”结尾的行。只要apps 包含__init__.py,它就可以工作。您的树中有另一个名为 apps 的目录吗?

标签: python pycharm


【解决方案1】:

所以在尝试了几十种在线解决方案后,我做到了:

  • 将 Finchin/apps 重命名为 Finchin/applications
  • from Finchin.wsgi import * 导入脚本

工作解决方案:

# /Users/jonas/PycharmProjects/Finchin/apps/universe/pycharm_test.py

import sys
sys.path.append("/Users/jonas/PycharmProjects/Finchin")

from Finchin.wsgi import *  # import this

from apps.cashpool.models import Cashpool  # works now

from stellar_sdk.asset import Asset  # works
from stellar_sdk.keypair import Keypair  # works

def test():
    print('test')

test()

我认为就第一点而言,这会导致与应用程序本身中的应用程序目录和应用程序.py 发生一些冲突(但是,通常这应该可以工作)。

from Finchin.wsgi import * 的导入可能会加载设置,因为没有此导入它会引发

/Users/jonas/PycharmProjects/Finchin/venv/bin/python /Users/jonas/PycharmProjects/Finchin/applications/universe/issue_token.py
['/Users/jonas/PycharmProjects/Finchin/applications/universe', '/opt/homebrew/Cellar/python@3.9', '/Users/jonas/PycharmProjects/Finchin/applications', '/Users/jonas/PycharmProjects/Finchin', '/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_display', '/opt/homebrew/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/opt/homebrew/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/opt/homebrew/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/Users/jonas/PycharmProjects/Finchin/venv/lib/python3.9/site-packages', '/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_matplotlib_backend']
Traceback (most recent call last):
  File "/Users/jonas/PycharmProjects/Finchin/applications/universe/issue_token.py", line 17, in <module>
    from applications.cashpool.models import Token
  File "/Users/jonas/PycharmProjects/Finchin/applications/cashpool/models.py", line 3, in <module>
    class FiatCurrency(models.Model):
  File "/Users/jonas/PycharmProjects/Finchin/venv/lib/python3.9/site-packages/django/db/models/base.py", line 108, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/Users/jonas/PycharmProjects/Finchin/venv/lib/python3.9/site-packages/django/apps/registry.py", line 253, in get_containing_app_config
    self.check_apps_ready()
  File "/Users/jonas/PycharmProjects/Finchin/venv/lib/python3.9/site-packages/django/apps/registry.py", line 135, in check_apps_ready
    settings.INSTALLED_APPS
  File "/Users/jonas/PycharmProjects/Finchin/venv/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__
    self._setup(name)
  File "/Users/jonas/PycharmProjects/Finchin/venv/lib/python3.9/site-packages/django/conf/__init__.py", line 63, in _setup
    raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Process finished with exit code 1

【讨论】:

    【解决方案2】:
    1. 打开settings/preferences 对话框,然后打开项目解释器页面。

    2. 单击项目解释器字段旁边的并选择Add。 “添加 python 解释器”对话框将打开。

    3. 在“添加 Python 解释器”对话框的左侧窗格中,单击虚拟环境节点。我假设您已经设置了虚拟环境。

    4. 使用下拉列表指定所需的解释器,或单击 eclipse 按钮​​在您的文件系统中找到一个。

    5. 选中复选框Make available to All Projects

    【讨论】:

    • 我激活了一个 venv,它指向解释器设置中正确的 python3.9 可执行文件
    猜你喜欢
    • 2016-04-06
    • 2011-12-19
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多