启动并运行通过"设置工具"打包的项目,满足所有要求



项目结构如下所示:

project/
|-- src/
|   |--sub_project1/
|      |--__init__.py
|      |-- main.py
|   |-- __init__.py
|   |-- requirements.txt
|
|-- setup.py
|-- README.md
|-- MANIFEST.in  

我从setuptools开始,以便打包我的项目。我认为我成功地创建了一个发行版,但我不确定如何在虚拟环境(venv(中彻底设置项目以运行srcsub_project1main.py的后续过程。

到目前为止,我遵循的步骤:

  • 通过pipreqs创建requirements.txt
  • 创建setup.py,它将include_package_data=True设置为包含MANIFEST.in中提到的requirements.txt

setup.py

from setuptools import setup, find_packages
import pkg_resources
with open("README.md", "r") as fh:
long_description = fh.read()
# read data from .txt as str, decode and then split to get a list of requirements
requirements = pkg_resources.resource_string('src', 'requirements.txt').decode("utf-8").split()
setup(
...
packages=find_packages(),
include_package_data=True,
install_requires=requirements,
...
)

MANIFEST.in

include *.txt
  • 生成分配:

    python setup.py sdist bdist_wheel

现在,由于我已经打包了项目,我想创建一个虚拟环境,设置依赖项并运行它。

我首先创建了一个虚拟环境,使用python -m venv <DIR>.并使用以下两个命令之一来安装所有要求:

pip install -r requirements.txt

pip install ./downloads/SomeProject-1.0.4.tar.gz

它会安装所有必需的软件包。但是,从这里开始,我不确定实际执行脚本的步骤。如何在创建的虚拟环境中实际执行项目?

此外,我有一些问题:

  1. setup.py仅用于安装要求吗?上述两个命令在输出方面有何不同?
  2. 除了安装需求之外,您是否需要手动将项目文件放在所需的目录中?由于 pip install *.tar.gz 没有解压缩任何项目文件!
  3. 如何在 setup.py 中使用entry_points

要激活虚拟环境,您必须运行source /path/to/venv/bin/activate。然后,当您 cd 到包含setup.py的目录并运行pip install .时,它将安装您的软件包及其所有依赖项。

在任何时候,您都可以运行which pip以查看安装将使用哪个 pip。如果要将软件包安装到 virtualenv 中,请确保这是/path/to/venv/bin/pip

pip install -r requirements.txt将只安装requirements.txt中列出的软件包。pip install /path/to/tar.gz应该像pip install /path/to/package一样工作.

入口点更广泛一些,但这里有一个很好的入门资源。

您可以查看https://setupy.info/以获取有关 setup.py 的更多信息,它应该回答问题 1 和 2。

您还可以在项目中使用pip install -e .之类的内容在本地安装包。

希望这有帮助。

最新更新