如何更改Python项目的根目录?

问题描述 投票:0回答:1

我有一个简单的 Django 项目(即 this 教程中的项目)。

树的主要部分如下所示:

.
├── env
├── proj
│   ├── proj
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── api
│   │   ├── __init__.py
│   │   ├── serializers.py
│   │   ├── urls.py
│   │   └── views.py
│   ├── base
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── models.py
│   │   ├── tests.py
│   │   └── views.py
|   ├── db.sqlite3
│   └── manage.py
└── README.md 

在教程中,外部

proj
文件夹是根目录。
api/views.py 中有以下导入:
from base.models import Item

当我在
settings.py
中打印 sys.path 时,它包含
/path/to/wrapper/proj

但我希望我的根文件夹高一级。

这就是我所做的:

  • 转到设置>项目结构并将内容根更改为
    /path/to/wrapper
  • 将另一个
    .parent
    附加到
    settings.py
    中的BASE_DIR
    (现在是
    BASE_DIR = Path(__file__).resolve().parent.parent.parent
  • proj.
    添加到导入
    (现在
    from proj.base.models import Item

但这行不通:

ModuleNotFoundError: No module named 'proj.base'

当我在
settings.py
中打印 sys.path 时,它仍然包含
/path/to/wrapper/proj

它实际上来自哪里?我该如何改变它?

设置中内容根的唯一影响似乎是语法突出显示。
由于我更改了它,PyCharm 认为带有前缀

proj.
的导入是正确的。

我已经在另一个项目中使用了这个结构(参见here)。
在那里它起作用了。但我没有看到这两个项目之间的区别。

编辑: 在评论中建议更改源根目录。
但该更改没有任何效果(除了根文件夹现在是蓝色的)。
(显然,除非另有指定,否则源根隐式是内容根。)

enter image description here

django pycharm pythonpath
1个回答
0
投票

我没有找到一种方法来完全实现我的意图。 但无论如何,这可能是一个坏主意。

感谢@jhole 提供源根源的提示。
一个好的解决方案是使用包装器作为内容根, 以及外部

proj
文件夹作为 源根
(我不知道这两者可以分开。)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.