我正在尝试在Ubuntu中使用virtualenv来安装本地虚拟Python环境.当我运行shell命令时:
$ virtualenv ./virt_python
Run Code Online (Sandbox Code Playgroud)
它抛出一个无法导入的异常pkg_resources.但是当我打开一个Python shell并且from pkg_resources import load_entry_point运行正常时.作为参考,完整的堆栈跟踪如下.
$ virtualenv ./virt_python
New python executable in ./virt_python/bin/python
Installing setuptools............done.
Installing pip.......
Complete output from command /home/rpsharp/local/...hon/bin/easy_install /usr/local/lib/pytho...pport/pip-1.1.tar.gz:
Traceback (most recent call last):
File "/home/rpsharp/local/workspace/invest-natcap.invest-3/virt_python/bin/easy_install", line 5, in <module>
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
----------------------------------------
...Installing pip...done.
Traceback (most recent call last):
File "/usr/local/bin/virtualenv", line 9, in <module>
load_entry_point('virtualenv==1.7.1.2', 'console_scripts', 'virtualenv')()
File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 928, in main
never_download=options.never_download)
File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1042, in …Run Code Online (Sandbox Code Playgroud) 我习惯于使用Pip预先下载软件包,然后将它们复制到目标机器进行部署.随着新推出的Python Wheels,我被迫"pip ... --no-use-wheel",因为一些下载的软件包是特定于平台的(我正在开发OSX并部署到Debian)并且不会安装在目标机器上.有没有办法为目标平台(或平台无关)下载车轮?
我在PyPi上有一个软件包,在准备一个新版本时,我构建了源代码分发,构建了轮子并上传,所有这些都使用了setuptools.
但是,我发现它只上传了upload命令(python和python3)中使用的Python版本的轮子.
以下是我要采取的步骤:
python3 setup.py sdist
python3 setup.py bdist_wheel --universal
python3 setup.py sdist bdist_wheel upload
Run Code Online (Sandbox Code Playgroud)
根据Python包装用户指南:
"Universal Wheels"是纯Python的轮子(即不包含编译的扩展)并支持Python 2和3
所以这似乎对我来说是正确的.
在轮子构建步骤之后,我验证了轮子是否已构建并具有文件名格式PACKAGE-VERSION-py2.py3-none-any.whl,dist但是当我运行上载时python3 setup.py sdist bdist_wheel upload,它会创建PACKAGE-VERSION-py3-none-any.whl并上传它.
如果我运行python setup.py sdist bdist_wheel upload它也会执行相同的操作并上传Python 2-only.
我使用pip来获取nwhy的.whl文件
pip wheel --wheel-dir=./ numpy
Run Code Online (Sandbox Code Playgroud)
我得到了 numpy-1.13.3-cp27-cp27mu-linux_armv7l.whl因为我使用的是ARM平台,但是当运行pip for protobuf时
pip wheel --wheel-dir=./ protobuf
Run Code Online (Sandbox Code Playgroud)
我有 protobuf-3.4.0-py2.py3-none-any.whl
所以,为什么不linux_armv7l喜欢numpy的情况,我没有改变机器并搜索那个差异,但没有信息.
谢谢你的建议 .
有了pip 1.5.X,我们可以使用pip wheel来构建和缓存封装的车轮,然后使用--use-wheel具有pip install从缓存的车轮安装.
我正在尝试在环境设置脚本中使用此功能.这就是我正在尝试的:
pip wheel --wheel-dir=/tmp Cython==0.19.2
pip install Cython==0.19.2 --use-wheel --no-index --find-links=/tmp
Run Code Online (Sandbox Code Playgroud)
我希望pip wheel在构建它之前检查轮子是否已经存在.但它似乎忽略了现有的轮子并且每次都建立.
有可能避免这种情况吗?
我的印象是(使用setuptools):
python setup.py develop
Run Code Online (Sandbox Code Playgroud)
安装所需的软件包(在install_requires中指定)时不会使用轮子.
问题:
我在谈论这个特殊的安装脚本.
背景:我有一个负责安全的源文件。其中有魔术键和特定算法。
是否可以从 python 蛋或轮包中删除这个单一的源文件?
我已经完成了使用 egg 命令只发送二进制文件。
python setup.py bdist_egg --exclude-source-files
Run Code Online (Sandbox Code Playgroud)
编辑项目结构:
??? setup.py
??? src
| ??? __init__.py
| ??? file1.py
| ??? file2.py
| ??? file_to_exclude.py
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我已经将我的私人回购打包成一个轮子。有不同版本的轮子。是否可以从命令行使用 pip 和通过 requirements.txt 文件安装特定轮版本的 repo?据我所知,pip 文档中没有提到此功能。
我可以使用 Github 令牌从私有存储库安装 pip 包,没有问题。
pip install git+https://$GITHUB_TOKEN@github.com/[username]/[reponame].git
我还可以安装带有特定提交的私有 pip 包:
pip install git+https://$GITHUB_TOKEN@github.com/[username]/[reponame].git@[commit_sha]
在我的项目中,我有一个 setup.py 文件,它使用以下命名空间模式构建多个模块:
from setuptools import setup
setup(name="testmoduleserver",
packages=["testmodule.server","testmodule.shared"],
namespace_packages=["testmodule"])
setup(name="testmoduleclient",
packages=["testmodule.client","testmodule.shared"],
namespace_packages=["testmodule"])
Run Code Online (Sandbox Code Playgroud)
我正在尝试为这两个包构建轮文件。但是,当我这样做时:
python -m pip wheel .
Run Code Online (Sandbox Code Playgroud)
它只为定义之一构建包。
为什么只构建一个包?
一些背景:
我正在从事的项目使用python-ldap库。由于我们是一个混合操作系统开发团队(一些使用 Linux,一些使用 macOS 和一些 Windows),我试图让项目在所有环境中构建。不幸的是,python-ldapWindows 没有正式支持,但有由 Christoph Gohlke 维护的非官方轮子。我已经测试了轮文件,它工作正常。
问题:我如何告诉 Poetry 在 Windows 上使用轮子以及python-ldap在 Linux 和 macOS 上使用官方包?
我尝试了多种方法,包括使用多个约束依赖项和标记:
python-ldap = [
{ markers = "sys_platform == 'linux'", version = "*" },
{ markers = "sys_platform == 'win32'", path="lib/python_ldap-3.2.0-cp36-cp36m-win_amd64.whl" }
Run Code Online (Sandbox Code Playgroud)
......但是,从判断poetry.lock文件,似乎再标记合并,只是确定是否库应安装在所有:
[[package]]
category = "main"
description = "Python modules for implementing LDAP clients"
marker = "sys_platform == \"linux\" or sys_platform == \"win32\""
name = …Run Code Online (Sandbox Code Playgroud) python-wheel ×10
python ×8
pip ×5
setuptools ×3
python-3.x ×2
armv7 ×1
egg ×1
git ×1
github ×1
pypi ×1
python-2.7 ×1
python-3.6 ×1
python-ldap ×1
virtualenv ×1