我正在按照教程在 Heroku 上部署 Django 应用程序。
在代码的第五行中,它说pip freeze > requirements.txt
但是当我运行它时(从venv
),requirements.txt
文件是空的!它使用之前的相同代码生成了 6-7 个依赖项。
我怎样才能解决这个问题?
Python中有没有像requirements.txt这样的功能,您可以将使用的包列表存储到文件中,每当其他人想要运行您的程序并需要安装依赖项时,他们只需执行pip install -r requests即可。 TXT。
我认为,这在将 R 脚本部署到生产中时有很大帮助。如果没有这样的功能,我该如何复制它?
简短版本: \n是否可以在requirements.txt中使用-e参数以及可编辑包的安装路径?
\n\n第一种方法
\n\n要求.txt:
\n\n-e git+https://github.com/snake-soft/imap-storage.git#egg=imap-storage\n
Run Code Online (Sandbox Code Playgroud)\n\n优点:自动安装
\n\n相反:可编辑目录位于 virtualenv src 文件夹内(不在工作区中)
\n\n第二种方法 (编辑:在知道自己在做什么之前不要使用此方法,请看底部)
\n\n如果我克隆存储库并像这样安装它(virtualenv 已激活):
\n\ncd /home/user/workspace\ngit clone https://github.com/snake-soft/imap-storage.git\npip install -e .\n
Run Code Online (Sandbox Code Playgroud)\n\n给出我想要的结构:
\n\nworkspace\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 imap-storage\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 django-project # uses imap-storage module\n
Run Code Online (Sandbox Code Playgroud)\n\n我有我想要的。存储库 (imap-storage) 与使用它的 django-project 并行。\n它是可导入的,因为它安装在 virtualenv 内。
\n\nPro:可编辑目录位于我的工作区中
\n\n魂斗罗:不自动化,不直观
\n\n目标
\n\n举例来说,我将 django 添加到我的 venv 中pip install django
。生成我的requirements.txt文件的通常方法是pip freeze > requirements.txt
产生:
asgiref==3.2.3
Django==3.0.2
pytz==2019.3
sqlparse==0.3.0
Run Code Online (Sandbox Code Playgroud)
这是个谎言。我唯一的要求是 django,我想要的(完全有效的)requirements.txt 是:
Django>=3.0.2, <4
Run Code Online (Sandbox Code Playgroud)
有时这很重要。对于真正的应用程序,我最终会得到许多具有重叠依赖项的包。升级时这可能会或可能不会导致问题,但如果我固定了所有我不关心的依赖包,几乎总是会出现问题(在上面的示例中,它们取决于 django 开发人员,而不是我)。
为了优化依赖项臃肿的requirements.txt 文件,我可以手动检查源代码(导致上面的requirements.txt 为空;)),但对于任何实际应用程序来说,这很快就会变得不切实际。
我有一个.gitlab-ci.yml
看起来像这样的:
image: "python:3.7"
before_script:
- pip install -r requirements.txt
stages:
- stageA
- stageB
stage_a:
stage: stageA
script:
- run_some_python_scripts
stage_b:
stage: stageB
script:
- run_more_python_scripts
Run Code Online (Sandbox Code Playgroud)
通过此设置,requirements.txt
在每个阶段之前安装。我只需要安装一次,这样 和 都stageA
可以stageB
使用。
我怎样才能实现这个目标?
python continuous-integration gitlab requirements.txt gitlab-ci
我正在尝试安装该requirements.txt
文件skiptracer
,但它一直说
ERROR: Could not find a version that satisfies the requirement pprint (from -r requirements.txt (line 7)) (from versions: none)
ERROR: No matching distribution found for pprint (from -r requirements.txt (line 7))
Run Code Online (Sandbox Code Playgroud)
我什至无法安装pprint
情况:
我创建了一个 python 包,其中使用以下库:
我的问题是,当我这样做时pip freeze
,结果只返回版本值
我读过一些网站,他们说这是因为,例如,os 和 unittest 已经随 Python3.X 一起安装了。
问题:
我的django项目有一个虚拟环境,但是当我点击时pip freeze
,我会得到一个全球站点软件包列表,其中包括太多的软件包,例如ubuntu软件包和许多无关紧要的东西。无论virtualenv是否处于活动状态,都会发生这种情况。我的网站软件包列表看起来也有些苗条,所以我想知道venv是否一直在工作。
(env)~/code/django/ssc/dev/env/lib/python2.7/site-packages> ls
django
Django-1.4-py2.7.egg-info
easy-install.pth
pip-1.0.2-py2.7.egg
setuptools-0.6c11-py2.7.egg
setuptools.pth
Run Code Online (Sandbox Code Playgroud)
我怎么了
我已经看到在ruby的gem文件(文档)中使用的twiddle-wakka运算符(〜> )来指定与此类似的最后一个点版本:
'~> 0.3.1' is satisfied by 0.3.1, 0.3.2, 0.3.3, etc.
'~> 0.3.1' is not satisfied by 0.3.0
'~> 0.3' is satisfied by 0.3.1, 0.4.0, 0.5.1, etc.
'~> 0.3' is not satisfied by 0.2.0, 0.2.1, etc.
Run Code Online (Sandbox Code Playgroud)
我看到有一个>=
运算符requirements.txt
可以用来指定比这更好的东西,但我希望避免任何未来的包更新(主要版本更新)不再向后兼容我的代码 - 因此我想要一个玩弄,瓦卡.
pip中是否有等效的运算符?
我突然无法启动Django服务器了,运行检查:
python manage.py check
Run Code Online (Sandbox Code Playgroud)
显示以下错误:
apps.populate(settings.INSTALLED_APPS)
File "/home/aym/.virtualenvs/prod_env/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
File "/home/aym/.virtualenvs/prod_env/local/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/aym/workspace/CompanyP/apps/account/models.py", line 18, in <module>
from apps.groups.models import SubscriptionGroup
File "/home/aym/workspace/CompanyP/apps/subscription/models.py", line 8, in <module>
from apps.member.models import Member
File "/home/aym/.virtualenvs/prod_env/local/lib/python2.7/site-packages/bleach/__init__.py", line 5, in <module>
from bleach.linkifier import
File "/home/aym/.virtualenvs/prod_env/local/lib/python2.7/site-packages/bleach/linkifier.py", line 5, in <module>
from html5lib.filters.base import Filter
ImportError: No module named base
Run Code Online (Sandbox Code Playgroud)
你知道吗?
requirements.txt ×10
pip ×7
python ×7
django ×1
git ×1
gitlab ×1
gitlab-ci ×1
html5lib ×1
importerror ×1
pprint ×1
r ×1
virtualenv ×1