标签: pipenv

Pipenv vs setup.py

我正在尝试迁移到pipenv.我传统上使用setup.pypip和没有pip install -e .安装该模块作为一个包,这样我可以做到这样的东西from myproject.xyz.abc import myClass从项目内的任何地方.

如何实现与类似的效果pipenv,摆脱的setup.py

注意:我正在使用python 2.7.

python pip setuptools pipenv

20
推荐指数
3
解决办法
8663
查看次数

pipenv install <package> 与 pip install <package> 有什么区别?

使用pipenv install <package>pip install <package>使用pipenv shell.

我知道pipenv install <package>

  1. 如果尚未创建,请创建虚拟环境。
  2. pipenv lock自动运行命令。

除了这些之外,这两者之间还有其他区别吗?

python-3.x pipenv

20
推荐指数
1
解决办法
6633
查看次数

命令“python setup.py egg_info”失败,/tmp/../ 中的错误代码为 1

使用 pip 安装依赖项时出现以下错误:

pip9.exceptions.InstallationError 命令“python setup.py egg_info”在 /tmp/tmpoons7qgkbuild/opencv-python/ 中失败,错误代码为 1

下面是在pipenv install opencv-python最近的 linux (5.4.0 x64) 系统上运行命令的结果。

Locking [packages] dependencies…
self.repository.get_dependencies(ireq):
  File "/usr/lib/python3/dist-packages/pipenv/patched/piptools/repositories/pypi.py", line 174, in get_dependencies
    legacy_results = self.get_legacy_dependencies(ireq)
  File "/usr/lib/python3/dist-packages/pipenv/patched/piptools/repositories/pypi.py", line 222, in get_legacy_dependencies
    result = reqset._prepare_file(self.finder, ireq, ignore_requires_python=True)
  File "/usr/lib/python3/dist-packages/pipenv/patched/notpip/req/req_set.py", line 644, in _prepare_file
    abstract_dist.prep_for_dist()
  File "/usr/lib/python3/dist-packages/pipenv/patched/notpip/req/req_set.py", line 134, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "/usr/lib/python3/dist-packages/pipenv/vendor/pip9/req/req_install.py", line 435, in run_egg_info
    call_subprocess(
  File "/usr/lib/python3/dist-packages/pipenv/vendor/pip9/utils/__init__.py", line 705, in call_subprocess
    raise InstallationError(
pip9.exceptions.InstallationError: Command "python setup.py egg_info" failed with error …
Run Code Online (Sandbox Code Playgroud)

python pip pipenv

20
推荐指数
3
解决办法
5万
查看次数

如何将 python 版本从 3.8 降级到 3.7 (mac)

我正在使用 Python 和 okta-aws 工具,为了在 aws 上获取正确的凭据,我需要运行 okta-aws init。但是收到错误信息,Could not read roles from Okta系统提示"Your Pipfile requires python_version 3.7, but you are using 3.8.3 (/usr/local/Cellar/o/1.1.4/l/.venv/bin/python)

我已经尝试在 mac 上搜索所有的 Pipfile,似乎我~/Pipfile/usr/local/Cellar/python@3.8/3.8.3_2/libexec/bin/Pipfile所有下的 Pipflie都具有相同的 3.8 版本的 python,而我下的 Pipfile /usr/local/Cellar/okta-aws-tools/1.1.4/libexec/Pipfilerequired python_version = 3.7.

我已经为此苦苦挣扎了一段时间,真的不知道如何解决这个问题。

python virtualenv okta pipenv python-3.8

19
推荐指数
2
解决办法
7万
查看次数

通过pipenv自定义模块搜索路径(PYTHONPATH)

我有一个Python项目,包括一个Jupyter笔记本,一个bin目录中的几个脚本和一个目录中的模块src,依赖于Pipfile:

myproject
??? myproject.ipynb
??? Pipfile
??? Pipfile.lock
??? bin
?   ??? bar.py
?   ??? foo.py
??? src
    ??? baz.py
    ??? qux.py
Run Code Online (Sandbox Code Playgroud)

脚本foo.pybar.py使用标准shebang

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

并可以运行pipenv shell:

mymachine:myproject myname$ pipenv shell
(myproject-U308romt) bash-3.2$ bin/foo.py
foo
Run Code Online (Sandbox Code Playgroud)

但是,我无法src从脚本中轻松访问模块.如果我加

import src.baz as baz
Run Code Online (Sandbox Code Playgroud)

foo.py时,我得到:

ModuleNotFoundError: No module named 'src'
Run Code Online (Sandbox Code Playgroud)

我试过的一个解决方案是在下面添加一个.env文件myproject:

PYTHONPATH=${PYTHONPATH}:${PWD}
Run Code Online (Sandbox Code Playgroud)

此作品感谢pipenv自动加载.env,但是检查的.env文件到项目的混帐分布将与传统使用的碰撞.env存储机密(如密码) -事实上,我的默认.gitignore …

python pythonpath python-3.x pipenv

18
推荐指数
2
解决办法
6252
查看次数

如何在pipenv中设置环境变量?

我需要为我在pipenv中运行的python项目设置一些访问令牌环境变量.每次启动pipenv时我都想设置这些环境变量.

我该怎么做呢?

python pipenv

18
推荐指数
1
解决办法
1万
查看次数

如何使用pipenv解决Python包依赖性问题?

pipenv用来处理Python包依赖项.

Python包使用两个包(命名pckg1pckg2),这些包依赖于相同的包命名pckg3,但是来自两个不同的版本.显示依赖项树:

$ pipenv graph
  pckg1==3.0.0
    - pckg3 [required: >=4.1.0]
  pckg2==1.0.2
    - pckg3 [required: ==4.0.11]
Run Code Online (Sandbox Code Playgroud)

尝试安装依赖项:

$ pipenv install

Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Hint: try $ pipenv lock --pre if it is a pre-release dependency.
Could not find a …
Run Code Online (Sandbox Code Playgroud)

python dependencies pip python-3.x pipenv

18
推荐指数
3
解决办法
8953
查看次数

如何在 Mac 上使用 Pipenv?

当通过pip()安装时pip install pipenv,在zsh shell上找不到该命令pipenv

如果通过brew:安装brew install pipenv,然后运行pipenv shell,出现错误

Loading .env environment variables...
Launching subshell in virtual environment...
Traceback (most recent call last):
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/bin/pipenv", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/vendor/click/core.py", line 610, in invoke …
Run Code Online (Sandbox Code Playgroud)

python macos zsh pipenv pipenv-install

18
推荐指数
1
解决办法
3万
查看次数

为什么版本号不能固定在Pipfile中?

我正在考虑使用pipenv并在这里的文档中
https://pipenv.readthedocs.io/en/latest/basics.html#importing-from-requirements-txt

它说(强调我的)

请注意,在导入需求文件时,它们通常会固定版本号,这可能是您不想要的

为什么是这样?

据我所知,Pipfile.lock文件将存储我安装的依赖项的特定版本和哈希,但我不希望能够看到Pipfile中安装的特定版本?(当我使用requirements.txt时,我的方式相同?)

python pip pipenv

17
推荐指数
2
解决办法
6225
查看次数

即使使用显式版本的Pipfile和Pipfile.lock,用户之间的差异

很抱歉,这是一个非常复杂的pipenv情况。

在我公司,我们正在使用pipenv(同时带有PipfilePipfile.lock)来控制用于不同工程师笔记本电脑的软件包。对于我们来说,这比对大多数团队而言更为重要,因为我们还使用Zappa来部署AWS Lambda代码,并且显然可以直接从部署者的便携式计算机中打包依赖项以进行部署。因此,如果人们的笔记本电脑在依赖性方面不完全一致,我们可以根据部署它的人员在云中获得不同的行为。

我们发现,即使在尝试使用Pipfile和完全控制依赖关系之后Pipfile.lock,我们最终还是在不同的笔记本电脑上得到了不同的Python包,如pip freeze部署代码中的错误所示和所示。

这是显示笔记本电脑与老板笔记本电脑之间差异的确切过程(我引用的Pipfile代码在多行中,但由于将SO格式设置遇到问题,因此将其压缩为一行):

  1. 一开始,我们所拥有的只是Pipfile带有通配符(如)指定的软件包的[requires] python_version = "3.6" [packages] flask = "*"。另外,我们没有一个Pipfile.lock,我的老板(他是该项目的第一个编码器)一直在运行--skip-lock
  2. 为了更好地控制内容,我首先进行了升级,Pipfile以使用显式版本替换通配符,还使Python版本更加具体,例如[requires] python_version = "3.6.4" [packages] Flask = "==1.0.2"。为此,我获得了老板pip freeze输出的副本,并将版本复制到Pipfile名称与此处列出的名称匹配的位置(我跳过了所有不匹配的内容,因为我认为这是上游依赖性,而我们没有尚未触及)。我犯了这个
  3. 我们仍然遇到问题,因此我们决定开始使用它Pipfile.lock来控制上游依赖项。因此,我的老板第一次pip install没有--skip-lock参加比赛就创建了一个,并做出了承诺。
  4. 我拉了Pipfile.lock,用删除了我的环境,pipenv --rm然后用重新创建了pipenv install
  5. 我们都运行pip freeze并比较了输出,但是我们仍然有许多差异。

我想我可以有我的老板删除其pipenv环境并重新安装依据承诺PipfilePipfile.lock,但由于它们是基于他pip freeze我会感到惊讶,有点如果改变任何东西。

所以我只是想知道:这种行为真的出乎意料吗?我一直以为,和的组合pipenv …

python pipenv

17
推荐指数
2
解决办法
520
查看次数