我读过一篇文章来Pipenv了解一些概念,例如锁定文件的用途,我认为我有一些误解。
它讨论了确保Pipfile.lock我们在将应用程序部署到生产环境时可以重现完全相同的工作环境,而不会出现任何意外。
换句话说:
它为您的 Python 项目提供确定性构建,而无需承担更新子依赖项版本的责任。
我的想法是,通过Pipfile,我可以更新所有软件包,同时确保我始终可以使用Pipfile.lock. 如果更新后一切正常,我可以使用 锁定环境pipenv lock。但是,我似乎无法找到一种方法来更新包而不重新生成Pipfile.lock并丢失项目的最后工作状态。
我在这里错过了什么吗?这个工作流程是不是错了?
是否有任何解析器可以读取 Pipfile 并返回 Pipfile 中使用的所有包的列表?
如果没有,该怎么办呢?我认为正则表达式可以完成这项工作,但我对 Pipfiles 的结构还不够熟悉,无法确认情况确实如此。
鉴于存在 Pipfile,似乎两者都会从 Pipfile 安装所有依赖项,并更新 Pipfile.lock。那么区别是什么呢?
我想从 git 存储库安装一个包,并使用 pipelinenv 指定提交 ID(我相信如果我使用 pip,它应该非常相似)
到目前为止我尝试过:
pipenv install "git+ssh://git@bitbucket.org/<username>/<repository>.git/<commit_id>#egg=mypackage"
将以下行附加到 Pipfile 并且没有错误
<package-name> = {git = "ssh://git@bitbucket.org/<username>/<repository>.git/<commit_id>"}
如果我导入该包,import mypackage它会检测到它,但缺少其依赖项。
mypackage的 setup.py看起来像;
import setuptools
with open("README.md", "r") as readme:
long_description = readme.read()
with open("./requirements.txt", "r") as fh:
requirements = fh.readlines()
setuptools.setup(
name='mypackage',
url='https://bitbucket.org/<username>/<repositroy>',
packages=setuptools.find_packages(),
install_requires=[req for req in requirements if req[0] not in ["#", "-"]],
Run Code Online (Sandbox Code Playgroud)
)
我已经开始使用pipenv并安装了flask软件包。
在我的Pipfile.lock中,有以下条目:
"flask": {
"hashes": [
"sha256:2271c0070dbcb5275fad4a82e29f23ab92682dc45f9dfbc22c02ba9b9322ce48",
"sha256:a080b744b7e345ccfcbc77954861cb05b3c63786e93f2b3875e0913d44b43f05"
],
"index": "pypi",
"version": "==1.0.2"
},
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会有两个不同的哈希值。有人可以详细说明吗?提前致谢!
我想切换到pipenv,但转换我的电流requirements.txt不是 1:1。
其中requirements.txt包含:
...
lxml==3.8.0 --no-binary :all:
pandas==0.23.4
...
Run Code Online (Sandbox Code Playgroud)
所以,当我运行pipenv install它时效果很好:
$ pipenv install
requirements.txt found, instead of Pipfile! Converting…
? Success!
Warning: Your Pipfile now contains pinned versions, if your requirements.txt did.
We recommend updating your Pipfile to specify the "*" version, instead.
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
? Success!
Updated Pipfile.lock (383f9f)!
Installing dependencies from Pipfile.lock (383f9f)…
???????????????????????????????? 44/44 — 00:00:05
To activate this project's …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Flask Web 应用程序部署到 Heroku,但我看到了关于需要在 git 存储库中包含哪些文件的相互矛盾的信息。
我的 webapp 是在虚拟环境 (venv) 中构建的,所以我有一个Pipfile和一个Pipfile.lock. 我还需要requirements.txt吗?一个会取代另一个吗?
我的另一个相关问题是,如果某个包无法在虚拟环境中安装会发生什么:我可以手动将它添加到requirements.txt或Pipfile吗?这是否会有效地做与pipenv install ...将包添加到需求列表之外的其他事情相同的事情(考虑到 Heroku 正在部署时安装包)。
试图将 python 脚本推送到 heroku,它抱怨我的 pipfile.lock 已过时。我正在使用 pipenv 来管理依赖项,并且我尝试运行 pipenv lock 来更新锁定文件无济于事。
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 2.39 KiB | 817.00 KiB/s, done.
Total 11 (delta 3), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Found python-3.6.5, removing
remote: -----> Installing python-2.7.15
remote: -----> Installing pip
remote: -----> Installing dependencies with Pipenv 11.8.2.
remote: …Run Code Online (Sandbox Code Playgroud) 我已经安装了virtualenv ,并sudo -H pip3 install virtualenv通过 virtualenv 创建了 venv ,但现在我无法在包含Pipfile 的新Django项目中创建 env 。\n我尝试过:
$ pipenv shell
但其结果是:
\nCreating a virtualenv for this project...\nPipfile: /home/mostafa/py38/lib/python3.8/site-packages/carfix/Pipfile\nUsing /usr/bin/python3.8 (3.8.5) to create virtualenv...\n\xe2\xa0\xb9 Creating virtual environment...ModuleNotFoundError: No module named \'virtualenv.seed.via_app_data\'\n\n\xe2\x9c\x98 Failed creating virtual environment\nRun Code Online (Sandbox Code Playgroud)\n我尝试了这些答案,但问题尚未解决:
\n我在Windows 10计算机上使用Pipenv遇到麻烦。最初,尝试运行时出现超时错误,pipenv install <module>并且按照此答案进行操作,因此我禁用了Windows Defender。
那摆脱了超时错误,然后它似乎已成功在〜/ .virtualenvs上安装了该软件包,但是在创建Pipfile.lock时出现了一个错误:
Adding flask to Pipfile's [packages]...
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
File "C:\Users\Edgar\AppData\Roaming\Python\Python36\site-packages\pipenv\utils.py", line 402, in resolve_deps
req_dir=req_dir
File "C:\Users\Edgar\AppData\Roaming\Python\Python36\site-packages\pipenv\utils.py", line 250, in actually_resolve_deps
req = Requirement.from_line(dep)
File "C:\Users\Edgar\AppData\Roaming\Python\Python36\site-packages\pipenv\vendor\requirementslib\models\requirements.py", line 704, in from_line
line, extras = _strip_extras(line)
TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)
我尝试安装requests和flask,结果相同。
pipfile ×10
python ×8
pipenv ×7
pip ×3
heroku ×2
dependencies ×1
python-3.x ×1
python-venv ×1
virtualenv ×1
windows ×1