繁体   English   中英

Pycharm IDE 导入模块时无法运行脚本

[英]Pycharm IDE can't run scripts when importing modules

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

# /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()。

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

  • 所有目录都有一个__init__.py
  • 所有应用程序都包含在settings.py
  • sys 路径看起来令人满意
  • 解释器链接到 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 解释器: 在此处输入图像描述

运行配置: 在此处输入图像描述

操作系统 shell 在此处输入图像描述

  1. 打开设置/首选项对话框,然后打开项目解释器页面

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

3.在添加 python 解释器对话框的左侧窗格中,单击虚拟环境节点

我假设您设置了虚拟环境

4 使用下拉列表指定所需的解释器,或单击 eclipse 按钮在文件系统中查找

  1. Select 复选框 可用于所有项目

因此,在尝试了数十种在线解决方案后,我做到了:

  • 将 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM