所以我正在使用这个名为
frappe
的框架,它似乎搞乱了 Python 环境初始化。
为了提供一些上下文,有一个名为
bench
的命令行工具,用于控制框架。
命令
bench start
与 Procfile
配合使用。以下是 Procfile 的内容:
redis_queue: redis-server config/redis_queue.conf
web: bench serve --port 8000
socketio: /home/amol/.nvm/versions/node/v22.3.0/bin/node apps/frappe/socketio.js
watch: bench watch
schedule: bench schedule
worker: bench worker 1>> logs/worker.log 2>> logs/worker.error.log
命令
bench start
在内部运行此 proc 文件。
我已经使用了虚拟环境来设置python虚拟环境。以下是虚拟环境处于活动状态时我可以运行的一些命令:
(.venv) amol@amol-IdeaPad-Gaming-3-15ARH05:~/WorkSpace/frappe/frappe-bench$ which python
/home/amol/WorkSpace/frappe/.venv/bin/python
(.venv) amol@amol-IdeaPad-Gaming-3-15ARH05:~/WorkSpace/frappe/frappe-bench$ which bench
/home/amol/WorkSpace/frappe/.venv/bin/bench
(.venv) amol@amol-IdeaPad-Gaming-3-15ARH05:~/WorkSpace/frappe/frappe-bench$ python
Python 3.12.3 (main, Sep 11 2024, 14:17:37) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import frappe;
>>> frappe
<module 'frappe' from '/home/amol/WorkSpace/frappe/frappe-bench/apps/frappe/frappe/__init__.py'>
>>>
现在与
bench start
一起使用的命令 Procfile
似乎使用了与我的终端使用的不同的 Python 环境。这是我得到的错误:
16:26:56 watch.1 | /home/amol/WorkSpace/frappe/frappe-bench/env/bin/python: Error while finding module specification for 'frappe.utils.bench_helper' (ModuleNotFoundError: No module named 'frappe')
我的理解是,它显然使用了与我的终端使用的不同的Python环境。
这是我使用命令行运行
bench watch
时遇到的错误。
(.venv) amol@amol-IdeaPad-Gaming-3-15ARH05:~/WorkSpace/frappe/frappe-bench$ bench watch
/home/amol/WorkSpace/frappe/frappe-bench/env/bin/python: Error while finding module specification for 'frappe.utils.bench_helper' (ModuleNotFoundError: No module named 'frappe')
我希望来自 frappe 团队的人或精通 Python 虚拟环境的人可以帮助我解决这个问题。
Frappe 在
./env
下管理自己的 Python 环境。 Frappe 和其他应用程序(从 ./apps
进行可编辑安装),包括它们的依赖项,将安装在您的工作台目录中的 env
下。 bench
CLI 管理此操作并使用 ./env/bin/python
解释器来满足其所有需求。
虽然工作台 CLI 应该全局安装 - 我更喜欢
pipx
以避免包冲突。 bench CLI 和 Frappe 通常使用不同的环境,进而使用解释器。
创建工作台 (实例) -
frappe-bench
文件夹时可能出现问题。你可以运行`bench setup env