栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在安装时复制配置文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在安装时复制配置文件

这是我曾经经历过的一个问题。它的根源在于,当您构建一个wheel文件时,在其中指定的所有绝对路径

data_files
都将相对于目标
site-packages
目录,请参见github上的此问题。通过进行该影响安装
pipinstall
,因为它会建立一个车轮的任何源包的(
.tar.gz
.tar.bz2
.zip
),并安装所得到的车轮:

$ pip install spam-0.1.tar.gz Processing ./spam-0.1.tar.gz**Building wheels for collected packages: spam  Running setup.py bdist_wheel for spam ... done**  Stored in directory: /Users/hoefling/Library/Caches/pip/wheels/d0/95/be/bc79f1d589d90d67139481a3e706bcc54578fdbf891aef75c0Successfully built spamInstalling collected packages: spamSuccessfully installed spam-0.1

检查已安装的文件会产生:

$ pip show -f spamName: spamVersion: 0.1...Location: /Users/hoefling/.virtualenvs/stackoverflow/lib/python3.6/site-packagesRequires: Files:  **Users/hoefling/.my_config**  spam-0.1.dist-info/DEscriptION.rst  spam-0.1.dist-info/INSTALLER  spam-0.1.dist-info/metaDATA  spam-0.1.dist-info/RECORD  spam-0.1.dist-info/WHEEL  spam-0.1.dist-info/metadata.json  spam-0.1.dist-info/top_level.txt

请注意,绝对路径是相对于

Location
目录的。在示例中,
.my_config
将放置在下
/Users/hoefling/.virtualenvs/stackoverflow/lib/python3.6/site-packages/Users/hoefling/.my_config

效果会更好,因为这些内置轮子已缓存在磁盘上,因此,下次重新安装软件包时,内置轮子仍存在于

pip
的缓存中,它将用于安装,甚至看不到任何有关构建的提示。终端日志中的滚轮。

没有真正的解决方案可以避免这种情况。我发现,最体面的解决方法是在安装时禁止“二进制”软件包以在安装时强制执行软件包

setup.py

$ pip install spam-0.1.tar.gz --no-binary=spamProcessing ./spam-0.1.tar.gzSkipping bdist_wheel for spam, due to binaries being disabled for it.Installing collected packages: spam  Running setup.py install for spam ... doneSuccessfully installed spam-0.1

现在,该文件已正确放置:

$ pip show -f spamName: spamVersion: 0.1...Location: /Users/hoefling/.virtualenvs/stackoverflow/lib/python3.6/site-packagesRequires: Files:  ../../../../../.my_config  spam-0.1-py3.6.egg-info/PKG-INFO  spam-0.1-py3.6.egg-info/SOURCES.txt  spam-0.1-py3.6.egg-info/dependency_links.txt  spam-0.1-py3.6.egg-info/top_level.txt

不幸的是,必须

pipinstall
使用附加键(通过自述文件,网页FAQ或类似方法)分别告知用户有关使用附加键进行呼叫的信息,因为不可能禁止在打包元数据中构建轮子。

结果,我不再包含具有绝对路径的文件。相反,我将它们与

site-packages
dir中的python源一起安装。在python代码中,如有必要,我必须为存在性检查和文件复制添加其他逻辑:

# program entrypointif __name__ == '__main__':    config = os.path.join(os.path.expanduser('~'), '.my_config')    if not os.path.exists(config):        shutil.copyfile('.my_config', config)    main.run()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410713.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号