python设置工具-从项目中安装子包

问题描述

我有两个具有以下结构的项目(trysetup1和trysetup2):

enter image description here

我想从项目trysetup2中pip安装package1并使用module1

我的setup.py在package1下看起来像这样:

select
  t.place,t.year,t.animal,t.plus,prev_year.plus as hello
from mytable t
left join mytable prev_year on prev_year.animal = t.animal
                           and prev_year.year = t.year - 1
order by t.year,t.animal;

我想使用module1的方式就像这样import setuptools setuptools.setup( name="common",version="1.0.2",packages=setuptools.find_packages(),) ,因为我仍然需要从package2中使用它

当尝试从module2导入时,效果很好

enter image description here

但是当尝试从module3中使用它时(在pip安装之后在另一个项目中)我遇到“ 解决的引用'package1'”问题

enter image description here

我知道我可以通过将module1放在package1下的另一个包中来使用它,但是我需要这种确切的结构以便从项目'trysetup1'的其余部分中使用它

谢谢!

解决方法

在这里找到我的答案

https://docs.python.org/3/distutils/examples.html

实际上,我要做的就是将setup.py文件更改为如下形式:


setuptools.setup(
    name="common",version="1.0.2",package_dir={'package1': ''},packages=['package1'],)

通过添加 package_dir 参数,设置功能告诉我根目录(package1)下的所有文件都在package1目录下,并通过添加 packages 参数来分发 package1 包,然后转到:

/..../ venv / lib / python3.8 / site-packages / common-1.0.2-py3.8.egg-info / top_level.txt

您将看到以下内容:

enter image description here