- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TLDR :裤子获取 OS X 特定的轮子,因为我正在 Mac 上开发。我怎样才能避免这种情况,或者指定我将部署到 Ubuntu?
全文 :
尝试使用 Pants 打包 Python 应用程序。到目前为止一切顺利,但遇到了一个我一直坚持一段时间的问题。我在 macbook 上开发,但部署到 EC2 Ubuntu。
这是我到目前为止所做的:
./pants run.py backend:admin_server
运行良好并生成dist/admin_server.pex
Failed to execute PEX file, missing compatible dependencies for:
mysql-python
pycrypto
ubuntu@ip-***:~$ export PEX_VERBOSE=1
ubuntu@ip-***:~$ python admin_server.pex
pex: Found site-library: /usr/local/lib/python2.7/dist-packages
pex: Found site-library: /usr/lib/python2.7/dist-packages
pex: Tainted path element: /usr/local/lib/python2.7/dist-packages
pex: Tainted path element: /usr/lib/python2.7/dist-packages
pex: Scrubbing from site-packages: /usr/local/lib/python2.7/dist-packages
pex: Scrubbing from site-packages: /usr/lib/python2.7/dist-packages
pex: Scrubbing from user site: /home/ubuntu/.local/lib/python2.7/site-packages
pex: Failed to resolve a requirement: MySQL-python==1.2.5
pex: Failed to resolve a requirement: pycrypto==2.6.1
pex: Unresolved requirements:
pex: - mysql-python
pex: - pycrypto
pex: Distributions contained within this pex:
pex: - six-1.10.0-py2.py3-none-any.whl
pex: - protobuf-2.6.1-py2.7.egg
pex: - setuptools-19.5-py2.py3-none-any.whl
pex: - MySQL_python-1.2.5-cp27-none-macosx_10_11_intel.whl
pex: - pycrypto-2.6.1-cp27-none-macosx_10_11_intel.whl
pex: - futures-3.0.4-py2-none-any.whl
pex: - webapp2-2.5.2-py2-none-any.whl
pex: - requests-2.9.0-py2.py3-none-any.whl
pex: - jmespath-0.9.0-py2.py3-none-any.whl
pex: - beautifulsoup4-4.4.1-py2-none-any.whl
pex: - python_dateutil-2.4.2-py2.py3-none-any.whl
pex: - boto3-1.2.3-py2.py3-none-any.whl
pex: - WebOb-1.5.1-py2.py3-none-any.whl
pex: - cssutils-1.0.1-py2-none-any.whl
pex: - webapp2_static-0.1-py2-none-any.whl
pex: - Paste-2.0.2-py2-none-any.whl
pex: - docutils-0.12-py2-none-any.whl
pex: - botocore-1.3.22-py2.py3-none-any.whl
pex: - protobuf_to_dict-0.1.0-py2-none-any.whl
Failed to execute PEX file, missing compatible dependencies for:
mysql-python
pycrypto
最佳答案
将项目分发为 PEX 文件的好处之一是您可以准备好它以在多个平台上运行。例如,一个 PEX 可以在 Linux 和 Mac 平台上运行。对于许多项目,除了构建 PEX 之外没有什么特别的事情可做。但是当您的项目依赖于特定平台的二进制代码时,您将需要执行一些额外的步骤。psutil
是包含平台特定代码的库的一个示例。图书馆。它包含在安装模块时编译到共享库中的 C 代码。要创建包含此类依赖项的 PEX 文件,您必须首先为所有平台提供该库的预构建版本,而不是运行裤子的平台。
预构建库的最简单方法是使用 pip 工具来构建轮子。
这个食谱假设如下:
# src/python/ps_example/main.py
import psutil
for proc in psutil.process_iter():
try:
pinfo = proc.as_dict(attrs=['pid', 'name'])
except psutil.NoSuchProcess:
pass
else:
print(pinfo)
# src/python/ps_example/BUILD
python_binary(name='ps_example',
source = 'main.py',
dependencies = [
':psutil', # defined in requirements.txt
],
)
# Defines targets from specifications in requirements.txt
python_requirements()
# src/python/ps_example/requirements.txt
psutil==3.1.1
linux $ mkdir ~/src/cookbook/wheelhouse
linux $ pip wheel -r src/python/multi-platform/requirements.txt \
--wheel-dir=~/src/cookbook/wheelhouse
linux $ ls ~/src/cookbook/wheelhouse/
psutil-3.1.1-cp27-none-linux_x86_64.whl
platforms=
范围。
# src/python/ps_example/BUILD
python_binary(name='ps_example',
source = 'main.py',
dependencies = [
':psutil', # defined in requirements.txt
],
platforms=[
'linux-x86_64',
'macosx-10.7-x86_64',
],
)
# Defines targets from specifications in requirements.txt
python_requirements()
pants.ini
并添加:
[python-repos]
repos: [
"%(buildroot)s/wheelhouse/"
]
psutil-3.1.1-cp27-none-linux_x86_64.whl
转到 mac 工作站并将其放在名为
wheelhouse/
的目录中在你的 repo 的根目录下。
mac $ ./pants binary src/python/py_example
mac $ unzip -l dist/ps_example.pex | grep psutil
17290 12-21-15 22:09 .deps/psutil-3.1.1-cp27-none-linux_x86_64.whl/psutil-3.1.1.dist-info/DESCRIPTION.rst
19671 12-21-15 22:09 .deps/psutil-3.1.1-cp27-none-linux_x86_64.whl/psutil-3.1.1.dist-info/METADATA
1340 12-21-15 22:09 .deps/psutil-3.1.1-cp27-none-linux_x86_64.whl/psutil-3.1.1.dist-info/RECORD
103 12-21-15 22:09
... .deps/psutil-3.1.1-cp27-none-macosx_10_11_intel.whl/psutil-3.1.1.dist-info/DESCRIPTION.rst
19671 12-21-15 22:09 .deps/psutil-3.1.1-cp27-none-macosx_10_11_intel.whl/psutil-3.1.1.dist-info/METADATA
1338 12-21-15 22:09 .deps/psutil-3.1.1-cp27-none-macosx_10_11_intel.whl/psutil-3.1.1.dist-info/RECORD
109 12-21-15 22:09
...
关于裤子包括 OS X 特定的 Python 轮子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34979100/
从下面的 setup.py 文件中,我试图从一个应该只包含 python 2.7 代码的项目中创建一个纯 python wheel。 from setuptools import setup setu
我正在尝试在 Linux 上安装 pytorch ( http://pytorch.org/ ),根据我的机器配置,我应该运行的命令是: pip 安装 https://s3.amazonaws.com
也许是一个广泛的问题,但我认为这与任何使用 github 并可以显着减少他们的工作量的 python 包维护者相关,所以希望这些权力能够让它站住脚。 基本上,在我看来: 为 python 构建和发布轮
我有一个包含 C 扩展的包,我想上传到 pypi:https://github.com/Erotemic/netharn 我使用命令 python setup.py bdist_wheel --py-
TLDR :裤子获取 OS X 特定的轮子,因为我正在 Mac 上开发。我怎样才能避免这种情况,或者指定我将部署到 Ubuntu? 全文 : 尝试使用 Pants 打包 Python 应用程序。到目前
我正在 Azure Pipelines 上运行测试(但同样的情况也适用于 Travis 和 Appveyor)。我有一个 Python 包,我们将其称为“计算器”,其中包含 cython 扩展。当我推
是否有(事实上的)标准 MIME 类型可用于 Python 轮包?我在 PEP 427 中看不到任何内容。 我认为 application/zip 可能是一个选项,但这似乎误导了我。 最佳答案 没有。
我一整天都在为 --find-links 苦苦挣扎,如果有人能在这里帮助我,我将非常感激。 我一直在使用python3.4进行开发,我添加的新功能之一使用Azure存储(最新版本),它需要加密,这需要
之前,我们仅将内部 pip 存储库用于源代码分发。展望 future ,我们还希望托管轮子来完成两件事: 为(本地)开发人员机器和 Alpine Docker 环境提供我们自己的代码 为没有 Alpi
我是一名优秀的程序员,十分优秀!