如何在 PythonAnywhere 的环境变量中定位 Django 设置模块?

How do I target the Django setting module in an environmental variable on PythonAnywhere?

我想 运行 我的独立脚本 csvImp.py,它与我的 Django 站点 BilliClub 使用的数据库交互。我正在 运行 在我的虚拟环境 django2.

中从项目根目录 (~/BilliClub) 安装脚本

我已按照说明进行操作 here,但 DJANGO_SETTINGS_MODULE 而不是密钥。让我感到困惑的部分是分配给环境变量的值。我尝试过的每次迭代都会在 运行ning 之后产生类似 ModuleNotFoundError: No module named 'BilliClub' 的错误 (django2) 04:02 ~/BilliClub $ python ./pigs/csvImp.py.

每次我尝试更改 .env 中的变量时,我都会重新加载 shell,因此 postactivate 脚本每次 运行s 并且我确定重新进入我的virtualenv。问题似乎是我无法弄清楚如何找到设置模块的路径。

.env 文件:

# /home/username/BilliClub/.env #

DJANGO_SETTINGS_MODULE="[what goes here???]" 

我的 settings.py 的完整路径是 /home/username/BilliClub/BilliClub/settings.py

来自 运行ning tree 的删节结果:

(django2) 04:33 ~ $ tree
.
├── BilliClub
│   ├── BilliClub
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── manage.py
│   ├── media
│   ├── pigs
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── bc2019.csv
│   │   ├── csvImp.py
│   │   ├── models.py
│   │   ├── models.pyc
│   │   ├── tests.py
│   │   ├── urls.py
│   │   └── views.py
│   └── ...

看来您应该将 csvImp 设为自定义管理命令,然后 DJANGO_SETTINGS_MODULE is "BilliClub.settings" 当你把你的工具函数写成 Django Management Command 时,你可以免费获得所有的 Django 配置,并且你的命令的根目录与 web 应用程序的根目录相同,并且它是 manage.py 所在的目录。

看看https://docs.djangoproject.com/en/3.1/howto/custom-management-commands/