setup.py 安装本地包

jaj*_*arr 11 python pip setup.py python-3.x

如果我有一棵树,看起来像:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 env\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

有没有办法将嵌套的 setup.py 包含在顶部 setup.py 的安装中?我想避免这种情况:

\n\n
pip install -e . ; cd project/package ; pip install -e .\n
Run Code Online (Sandbox Code Playgroud)\n

Lau*_*RTE 14

解决方案是拥有两个独立的项目:主项目(通常是应用程序)和子项目(通常是库)。主应用程序依赖于该库。

\n\n

树结构和setup.py

\n\n

主项目可以具有以下结构:

\n\n
your_app/\n|-- setup.py\n\xcb\x8b-- src/\n    \xcb\x8b-- your_app/\n        |-- __init__.py\n        |-- module1.py\n        \xcb\x8b-- ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

setup.py您的应用程序可以是:

\n\n
from setuptools import find_packages\nfrom setuptools import setup\n\nsetup(\n    name=\'Your-App\',\n    version=\'0.1.0\',\n    install_requires=[\'Your-Library\'],\n    packages=find_packages(\'src\'),\n    package_dir={\'\': \'src\'},\n    url=\'https://github.com/your-name/your_app\',\n    license=\'MIT\',\n    author=\'Your NAME\',\n    author_email=\'your@email.com\',\n    description=\'Your main project\'\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

你可以注意到:

\n\n
    \n
  • 您的应用程序的名称可能与您的包的名称略有不同;
  • \n
  • 该包依赖于“Your-Library”,定义如下;
  • \n
  • 您可以将源代码放入该src目录中,但这是可选的。很多项目都没有。
  • \n
\n\n

子项目可以具有以下结构:

\n\n
your_library/\n|-- setup.py\n\xcb\x8b-- src/\n    \xcb\x8b-- your_library/\n        |-- __init__.py\n        |-- lib1.py\n        \xcb\x8b-- ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

setup您的图书馆可以是:

\n\n
from setuptools import find_packages\nfrom setuptools import setup\n\nsetup(\n    name=\'Your-Library\',\n    version=\'0.1.0\',\n    packages=find_packages(\'src\'),\n    package_dir={\'\': \'src\'},\n    url=\'https://github.com/your-name/your_library\',\n    license=\'MIT\',\n    author=\'Your NAME\',\n    author_email=\'your@email.com\',\n    description=\'Your sub-project\'\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

把所有的东西放在一起

\n\n

为您的应用程序创建一个 virtualenv 并激活它

\n\n

进入your_library/目录并运行:

\n\n
pip install -e .\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后,进入your_app/目录并运行:

\n\n
pip install -e .\n
Run Code Online (Sandbox Code Playgroud)\n\n

您现在可以开始编码了。玩得开心!

\n\n

请参阅《Python 漫游指南》:\xe2\x80\x9c构建您的项目\xe2\x80\x9d。

\n

  • 他们说他们想避免执行您的解决方案要求执行的操作。 (2认同)