假设我有以下项目结构:
├── BUCK
├── main.py
└── setup.py
在哪里:
主文件
from markdown import markdown
def joke():
return markdown(u'Wenn ist das Nunst\u00fcck git und Slotermeyer?'
u'Ja! ... **Beiherhund** das Oder die Flipperwaldt '
u'gersput.')
print joke()
安装程序.py
import setuptools
setuptools.setup(
name="packaging-hello-world",
version="0.0.1",
description="A hello world that attempts to package a Python project with its dependencies",
packages=setuptools.find_packages(),
include_package_data=True,
install_requires=[
'markdown',
],
)
和
降压
python_binary(
name = 'bin_main',
main_module = 'main',
deps = [
':src_main',
],
package_style = 'standalone',
visibility = [
'PUBLIC',
],
)
python_library(
name = 'src_main',
srcs = glob([
'*.py',
]),
visibility = [
'PUBLIC',
],
)
markdown
安装在virtualenvironment
.
使用标准pex
工具,我可以做到:pex . markdown -c main.py -o joke.pex
其中生成的joke.pex
包含所需的依赖项(降价)。示例:unzip joke.pex -d tmp ; tree -a -I .bootstrap -L 2 tmp
导致:
tmp
├── .bootstrap
│ ├── _pex
│ └── pex
├── .deps
│ ├── Markdown-3.1-py2.py3-none-any.whl
│ ├── packaging_hello_world-0.0.1-py2-none-any.whl
│ └── setuptools-41.0.0-py2.py3-none-any.whl
├── PEX-INFO
├── __main__.py
└── __main__.pyc
如何使 BUCK 生成的 PEX ( buck build :bin_main
) 也包含markdown
?我尝试使用prebuilt_python_library
指向生成的轮文件setup.py
并将其添加为 dep of bin_main
,但是,生成的 PEX 仍然不包含所需的 deps。