为给定的virtualenv设置自定义abi分辨率。

virtualenvconfig的Python项目详细描述


虚拟配置

将virtualenv的pip修改为更喜欢自定义abi标记。这是为了便于安装 为给定的数字内容创建软件工作的编译过的c++包,如numpy和scipy (DCC)如玛雅、3ds Max、核能、胡迪尼等。

安装

下面是一个创建virtualenv的示例,该virtualenv旨在安装与dcc编译的 使用Visual Studio 2015。创建并激活虚拟环境。

$ virtualenv msvc2015_64
$ msvc2015_64\Scripts\activate
(python) $ pip install virtualenvconfig

设置ABI

您可以指定pip将在正常控制盘之前尝试下载的abi。在这个例子中,pip 将尝试下载ABI为vc2015的控制盘。如果没有找到匹配的包,它将尝试 下载ABI为vc2010的控制盘。如果找不到匹配的包,它将尝试查找包 就像皮普通常做的那样。请确保调用python,以便使用virtualenv的python,而不是系统python。

(python) $ cd msvc2015_64\lib\site-packages
(python) $ python virtualenvconfig.py --set-abi vc2015 --set-abi vc2010

激活

到目前为止,我们还没有真正更新pip的行为。我们需要给皮普打补丁,让它尊重 我们的定制ABI设置。这是通过添加/更新sitecommize.py来完成的。在初始化python时 它将尝试导入sitecustomize。将禁止导入此文件中的任何错误。

此命令将创建sitecustimize.py

(python) $ virtualenvconfig.py --install

如果SITECUSTRUZIZ.PY已经存在,则需要传递^ {< CD4>}或^ {CD5>}参数

(python) $ python virtualenvconfig.py --install -o

这将在lib文件夹而不是site packages文件夹中创建sitecustimize.py。所以 sitecommizepython脚本只在激活virtualenv时运行,而不是在站点包 使用目录时不激活virtualenv。

构建自定义ABI轮子

现在我们可以强制pip选择一组给定的abi,我们需要能够为 这些自定义ABI。可以通过更新pip包的setup.py文件来使用自定义 bdist_wheelabi_bdist_wheel。这将向setup.py添加所需的命令行参数 --abi [abi_name]允许您指定生成控制盘时使用的ABI。

一个示例setup.py:

fromsetuptoolsimportsetup,find_packagesimportvirtualenvconfigsetup(...,# Force the build command to be passed the target abi as a command line argumentcmdclass={'bdist_wheel':virtualenvconfig.abi_bdist_wheel()},)

模糊时的VirtualEnv设置

<>模糊为每个需要的微软VisualC++编译版本创建一个ValueLeNV 我们需要DCC软件。例如支持MAYA 2018/2019、3ds Max 2018/19、Houdini16.5/17 我们将C:\blur\lib\msvc2015_64_qt5\{release}\python创建为python 2.7virtualenv。我们那时 激活并pip安装我们想要在python中访问的这些dcc的所有包。 包括为msvc2010编译的numpy/scipy,以及使用 MSVC2015与DCC兼容。然后作为启动脚本的一部分,我们插入 C:\blur\lib\msvc2015_64_qt5\{release}\python\Lib\site-packagessys.path开始时 允许dcc使用安装在那里的python模块。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从flux的开始捕获元素,并创建一个新的flux,其中包含捕获的元素和剩余的元素   java十进制输入,然后是二进制输入(不使用Integer.parseInt)   java在某些IDE中如何调用对象上的方法?   在活动中访问片段的文本视图时发生java NullPointerException   java匿名内部类v/s单例类   java Android在imageview中放置多个位图   hashmap如何在Java中按键排序?   java如何让MatchAllFilter正常工作并向MatchAllFilter添加其他筛选器?   按下JButton时,javajframe不会添加组件   Java按函数parametr返回null或字符串,不带if   毕加索将图片URL加载到片段的java问题   java使用remove(对象)从LinkedList中删除整数   二进制关系的java接口