我已经在python3.7.1
虚拟环境中使用click
创建了一个简单的conda
命令行应用程序,当作为模块python -m
运行时,它可以正常工作。
创建单个命令(二进制)可执行文件,可以将其交付到文件系统上某个位置,该位置最好不依赖于python / conda虚拟环境。
请注意,这个问题可能与我对setuptools
的完全缺乏了解(我已经阅读了所有文档)密切相关。
项目结构:
python_clean_repo/
├── README.md
├── conda-environment.yaml
├── setup.py
├── tests
│ └── test_basic.py
└── yourpackage
├── configs
│ ├── app_config.yaml
│ └── config.py
├── main.py
└── scripts
└── cmdline.py
使用-m
选项运行时,一切都会按预期进行:
$ python -m yourpackage.scripts.cmdline
Hello World!
here i am in main
config is {'key': 'value'}
包装似乎已成功完成:
$ pip install -e .
...
Successfully installed python-clean-repo
所以我现在在我的虚拟环境中有一个名为yourscript
的可执行文件(这是setup.py
中提供的入口点的名称),它的运行完全符合我的期望:
$ yourscript
Hello World!
here i am in main
config is {'key': 'value'}
我如何“运送”此可执行文件,该可执行文件现在看起来直接与我的虚拟环境相关?我也尝试过python setup.py sdist
,但是由于某种原因,创建的tar.gz并不包含所有内容(没有包含的.py
模块,只有一堆.txt
文件,例如{{1} }和entry_points.txt