我正在尝试创建一个简单的3页烧瓶网站的PEX文件.该网站在python3上使用Gunicorn,客户希望将网站编译为封装pex文件.
pex -r zb1/requirements.txt -e zb1/run -o zb1.pex
也试过了
pex -r zb1/requirements.txt -m zb1:run -o zb1.pex
当我运行该命令时,它编译得很好,但问题是当我尝试运行pex文件时.
c:~ c$ ./zb1.pex
Traceback (most recent call last):
File ".bootstrap/_pex/pex.py", line 326, in execute
File ".bootstrap/_pex/pex.py", line 258, in _wrap_coverage
File ".bootstrap/_pex/pex.py", line 290, in _wrap_profiling
File ".bootstrap/_pex/pex.py", line 369, in _execute
File ".bootstrap/_pex/pex.py", line 427, in execute_entry
File ".bootstrap/_pex/pex.py", line 432, in execute_module
File "/usr/local/Cellar/python3/3.5.2/Frameworks/Python.framework/Versions/3.5/lib/python3.5/runpy.py", line 192, in run_module
mod_name, mod_spec, code = _get_module_details(mod_name)
File "/usr/local/Cellar/python3/3.5.2/Frameworks/Python.framework/Versions/3.5/lib/python3.5/runpy.py", line 127, in _get_module_details …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的本地模块与pex打包在一起,但似乎无法解决。
我创建了一个简单的项目:
? python --version
Python 2.7.10
? pex --version
pex 1.1.15
? tree .
.
??? bla
? ??? __init__.py
? ??? main.py
??? setup.py
Run Code Online (Sandbox Code Playgroud)
bla/__init__.py
import main
Run Code Online (Sandbox Code Playgroud)
bla/main.py
if __name__ == '__main__':
print 'yo'
Run Code Online (Sandbox Code Playgroud)
在我看来,这似乎是最简单的项目。
? pex -v . -o v.pex --disable-cache
Traceback (most recent call last):
File "/Users/Charly/repos/load_tester/venv/bin/pex", line 11, in <module>
sys.exit(main())
File "/Users/Charly/repos/load_tester/venv/lib/python2.7/site-packages/pex/bin/pex.py", line 540, in main
pex_builder = build_pex(reqs, options, resolver_options_builder)
File "/Users/Charly/repos/load_tester/venv/lib/python2.7/site-packages/pex/bin/pex.py", line 475, in build_pex
resolvables = [Resolvable.get(arg, resolver_option_builder) for arg in …Run Code Online (Sandbox Code Playgroud) 我正在尝试弄清楚如何使用 pex 对 python 项目进行自动化(ish)部署。我目前有以下流程:
$ poetry run pip freeze > requirements.txt
manually remove this-project line from requirements.txt
$ poetry run pex -r requirements.txt -o service.pex -e api:start --sources-directory=.
$ ./service.pex
Run Code Online (Sandbox Code Playgroud)
第二步的原因是,this-project如果我将该行留在其中,pex 将尝试在线查找。我理解这一点,但pip freeze确实将该行插入到requirements.txt. 我想知道的是:pex可以使用pyproject.toml还是poetry.lock直接使用?当前的解决方案是一种烦人的解决方案。
我看过2019 年教程,但它不起作用,因为当前版本的 pex 无法识别--project为选项。
任何其他建议将不胜感激。