严重挣扎于 sdist - 希望能够在导入时跳过文件夹
Seriously struggling with sdist - Want to be able to skip folder when importing
包结构:
main
|-folder1
|- folderA
|-myfile1.py
|-myfile2.py
|- folderB
|-myfile3.py
|-myfile4.py
|-folder2
|-myfile5.py
|-setup.py
现在我必须这样做:from main.folder1.folderA import myfile1
。我想要做的是:from main.folderA import myfile1
我在这方面度过了最糟糕的时光。
如果我这样做 python3 setup.py build
,它会在 build/ 文件夹中创建正确的文件夹结构,但是当我这样做时它似乎不起作用 python3 setup.py sdist
。
我的 setup.py 文件如下所示:
from setuptools import find_packages, setup
def find_packages_with_names():
dict_of_packages = {}
for pack in find_packages():
location = pack.replace('.', '/')
dict_of_packages[pack] = location
if 'main.folder1.' in pack:
new_name = pack.replace('.folder1.', '.')
dict_of_packages[new_name] = location
return dict_of_packages
setup(
name="main"
packages=find_packages_with_names().keys(),
package_dir=find_packages_with_names(),
)
为了可能增加混乱,它让我 from main.folderA import myfile1
如果我在本地执行此操作
pip3 install -v git+ssh://git@gitlab.com/path/repo-name.git@branch-name
但是,如果我在 Docker
中 运行 之后 from main.folderA import myfile1
会抛出错误
RUN --mount=type=ssh pip3 install -v git+ssh://git@gitlab.com/path/repo-name.git@branch-name
问题:
1)我需要做sdist吗?如果我只是构建,它似乎无法正确安装。如果我可以只使用 build 那就太好了!
2) 基本上任何你能给我的建议,让我可以 python3 from main.folderA import myfile1
而不是 python3 from main.folder1.folderA import myfile1
都会很棒!
在此先感谢+希望你们都保持健康!
我实际上找到了答案,尽管这花了很长时间才弄明白。
python3 setup.py bdist_wheel
包结构:
main
|-folder1
|- folderA
|-myfile1.py
|-myfile2.py
|- folderB
|-myfile3.py
|-myfile4.py
|-folder2
|-myfile5.py
|-setup.py
现在我必须这样做:from main.folder1.folderA import myfile1
。我想要做的是:from main.folderA import myfile1
我在这方面度过了最糟糕的时光。
如果我这样做 python3 setup.py build
,它会在 build/ 文件夹中创建正确的文件夹结构,但是当我这样做时它似乎不起作用 python3 setup.py sdist
。
我的 setup.py 文件如下所示:
from setuptools import find_packages, setup
def find_packages_with_names():
dict_of_packages = {}
for pack in find_packages():
location = pack.replace('.', '/')
dict_of_packages[pack] = location
if 'main.folder1.' in pack:
new_name = pack.replace('.folder1.', '.')
dict_of_packages[new_name] = location
return dict_of_packages
setup(
name="main"
packages=find_packages_with_names().keys(),
package_dir=find_packages_with_names(),
)
为了可能增加混乱,它让我 from main.folderA import myfile1
如果我在本地执行此操作
pip3 install -v git+ssh://git@gitlab.com/path/repo-name.git@branch-name
但是,如果我在 Docker
中 运行 之后from main.folderA import myfile1
会抛出错误
RUN --mount=type=ssh pip3 install -v git+ssh://git@gitlab.com/path/repo-name.git@branch-name
问题:
1)我需要做sdist吗?如果我只是构建,它似乎无法正确安装。如果我可以只使用 build 那就太好了!
2) 基本上任何你能给我的建议,让我可以 python3 from main.folderA import myfile1
而不是 python3 from main.folder1.folderA import myfile1
都会很棒!
在此先感谢+希望你们都保持健康!
我实际上找到了答案,尽管这花了很长时间才弄明白。
python3 setup.py bdist_wheel