Python 芹菜主管Virtualenv can';找不到通过github安装的pip包

Python 芹菜主管Virtualenv can';找不到通过github安装的pip包,python,django,celery,python-3.4,supervisord,Python,Django,Celery,Python 3.4,Supervisord,您好,我正在使用supervisor with芹菜来运行django web应用程序中的一些任务。芹菜似乎有一个发现/解决问题的问题,模型来自通过github直接安装的软件包 如上所述,软件包被安装/克隆到/src目录中。我想知道我的环境设置中是否缺少supervisord.conf文件中的某些内容,例如PYTHONPATH或其他可以安装这些软件包的内容。我得到一份工作 ValueError:无法解析相关模型 这似乎是没有意义的,因为应用程序作为一个整体与这些包一起工作得很好 版本 virtu

您好,我正在使用supervisor with芹菜来运行django web应用程序中的一些任务。芹菜似乎有一个发现/解决问题的问题,模型来自通过github直接安装的软件包

如上所述,软件包被安装/克隆到
/src
目录中。我想知道我的环境设置中是否缺少
supervisord.conf
文件中的某些内容,例如PYTHONPATH或其他可以安装这些软件包的内容。我得到一份工作

ValueError:无法解析相关模型

这似乎是没有意义的,因为应用程序作为一个整体与这些包一起工作得很好

版本

virtualenv/
  - bin/
  - lib/
  - share/
  - src/github-installed-egg
芹菜-3.1.18

主管-3.0b2

supervisord.conf

[program:celeryd]
command=/home/path/to/virtualenv/celery worker -A moi --loglevel=info
stdout_logfile=/var/log/celery/celeryd.log
stderr_logfile=/var/log/celery/celeryd.error.log
directory=/path/to/app
virtualenv的外观结构如下所示

virtualenv/
  - bin/
  - lib/
  - share/
  - src/github-installed-egg
错误

File "/home/ubuntu/moi/lib/python3.4/site-packages/django/db/models/fields/related.py", line 1600, in resolve_related_fields
raise ValueError('Related model %r cannot be resolved' % self.rel.to)
ValueError: Related model 'ndptc_core_courses.Course' cannot be resolved
web应用程序使用nginx和uwsgi运行,运行良好。uwsgi配置文件中的virtualenv设置可以实现这一点。模型是按名称而不是模型对象本身声明的外键。来自通过pypi安装的软件包的模型工作正常,只是那些安装在src文件夹中的模型才是问题的根源


不确定这是否是您的问题,但常见的情况是将您的应用程序安装在virtualenv下,并直接在主机上安装supervisor

在这种情况下,您需要确保正在运行的芹菜版本是安装在virtualenv中的版本,而不是可能安装在主机根环境中的版本

例如,假设您的virtualenv位于
/opt/virtualenvs/foo
,并且您的supervisor程序配置在
/etc/supervisor.d/foo.conf

[program:foo]
command=/opt/virtualenvs/foo/bin/celery -A celery.conf worker
...

不确定这是否是您的问题,但常见的情况是将您的应用程序安装在virtualenv下,并在主机上直接安装supervisor

在这种情况下,您需要确保正在运行的芹菜版本是安装在virtualenv中的版本,而不是可能安装在主机根环境中的版本

例如,假设您的virtualenv位于
/opt/virtualenvs/foo
,并且您的supervisor程序配置在
/etc/supervisor.d/foo.conf

[program:foo]
command=/opt/virtualenvs/foo/bin/celery -A celery.conf worker
...
您必须在
supervisor
config中“激活”VirtualNV。为此,请在应用程序配置中添加以下行:

environment=PATH="/opt/virtualenvs/foo/bin",VIRTUAL_ENV="/opt/virtualenvs/foo",PYTHONPATH="/opt/virtualenvs/foo/lib/python:/opt/virtualenvs/foo/lib/python/site-packages"
您必须在
supervisor
config中“激活”VirtualNV。为此,请在应用程序配置中添加以下行:

environment=PATH="/opt/virtualenvs/foo/bin",VIRTUAL_ENV="/opt/virtualenvs/foo",PYTHONPATH="/opt/virtualenvs/foo/lib/python:/opt/virtualenvs/foo/lib/python/site-packages"

请公布您收到的确切错误,您手动安装每个VCS软件包的配置e.t.cDid是什么,或者它们是否包含在需求文件中?如果是,您能显示requirements.txt文件中的行吗?也许来自
pipfreeze
的相关行也会有所帮助。它们是需求文件“-e git+h”的一部分ttps://ndptc-admin@bitbucket.org/ndptc admin/ndptc core.git#egg=ndptc“我在http中放了一个空格,这样它就不会链接了。你能粘贴/链接完整的supervisord.conf文件和相关的supervisor.d/*.conf文件吗,以及来自virtualenv内部和vietualenv外部的
pip freeze
的输出?这个问题似乎很奇怪,我会先看看这些东西。请公布你得到的确切错误,你的配置e.t.cDid是什么?你手动安装每个VCS软件包,还是它们包含在需求文件中?如果是,您能显示requirements.txt文件中的行吗?也许来自
pipfreeze
的相关行也会有所帮助。它们是需求文件“-e git+h”的一部分ttps://ndptc-admin@bitbucket.org/ndptc admin/ndptc core.git#egg=ndptc“我在http中放了一个空格,这样它就不会链接了。你能粘贴/链接完整的supervisord.conf文件和相关的supervisor.d/*.conf文件吗,以及来自virtualenv内部和vietualenv外部的
pip freeze
的输出?这个问题看起来很奇怪,我会先看看这些东西。谢谢你的回答,你回答的时候我正在编辑这个问题。你是对的,主管在主机上,芹菜在virtualenv上,但我正在给安装在virtualenv上的芹菜打电话。谢谢你的回答,你回答时我正在编辑问题。你是对的,主管在主机上,芹菜在virtualenv上,但我正在调用virtualenv中安装的芹菜。