gpt4 book ai didi

python - 如何在 virtualenv 中配置 pip 以将软件包安装到当前目录根目录?

转载 作者:太空狗 更新时间:2023-10-30 00:18:49 25 4
gpt4 key购买 nike

我将无服务器框架与 AWS Lambda 结合使用。在 pip3.6 中使用 pip.conf 时,我想将“target-dir”设置为“当前目录”。

将其设置为“.”像这样:

[global]target = "."

不起作用,因为 pip 在我的 virtualenv 根目录中创建了一个名为“.”的新目录,并继续在其中安装东西。我试过没有引号。我也尝试过 ./,但这会创建一个名为 .".

的目录

我正在使用 virtualenv(通过 venvpython3.6),但我需要将包放在根目录中由于 AWS Lambda 的限制,我使用 pip 安装时的 virtualenv。

最佳答案

[编辑]pip.conf 实际上是一个standard INI file ,所以它只允许绝对路径(->绝对,但它以lambda函数的根为根);而且它不能在内部使用变量。

方法一

因此,您应该在 target= 选项中包含完整路径(从根目录“/”开始)。

为此,您可以尝试使用(或类似的东西)检索 AWS Lambda 中的当前目录:

lambdash pwd

即,尝试获取一个 shell 并调用 pwd(= 打印工作目录)。使用此信息填写 target 变量的正确路径。

方法二

但是,可以通过编程方式创建/更改 INI 文件。

因此,您可以将您的项目创建为可分发的项目(例如用于 pypi 或其他 DVCS 的项目)并设置一个 setup.py

可以找到准备好项目分发的教程 here .关于setup.py的具体讨论可见here

一个可以添加到你的setup.py中的函数可以如下(随意修改):

# remember to add the imports:
from setuptools import setup
from setuptools.command.install import install
import ConfigParser
import io

class CustomInstallCommand(install):
"""Customized setuptools install command."""
def run(self):
config= ConfigParser.RawConfigParser()
config.read(r'pip.conf')
config.set('target', os.environ['LAMBDA_TASK_ROOT'])
with open(r'pip.conf', 'wb') as configfile:
config.write(configfile)
install.run(self)


setup(
...

(在你的项目中使用 setuptools 查看上面提到的教程)

关于python - 如何在 virtualenv 中配置 pip 以将软件包安装到当前目录根目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46267065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com