问题描述
我有以下方式的python项目结构
common_project
|---folder
| |--- file1.py
| |--- file2.py
| |--- file3.py
project
|---src
|----|---main_file.py
我需要访问main_file.py中file1.py和file2.py的函数。如何压缩公共文件夹的文件以便我可以导入
from common.file1 import func1
我尝试将文件夹压缩为 zip -r common_files.zip common_project/folder/
。但文件被压缩为:
adding: common_project/folder/file1.py (stored 0%)
adding: common_project/folder/file2.py
但我需要导入为 from common import file1.py
任何帮助都值得赞赏。
解决方法
如果您希望能够按指示进行导入,则必须相应地构建 zip 文件:
common
|--- file1.py
|--- file2.py
|--- file3.py
我不知道您是否可以直接使用 zip
来实现。我使用符号链接作为解决方法:
$ ln -s common_project/folder common
$ zip -r common_files.zip common
adding: common/ (stored 0%)
adding: common/file1.py (deflated 10%)
adding: common/file3.py (deflated 10%)
adding: common/file2.py (deflated 10%)
$ rm common
$ unzip -l common_files.zip
Archive: common_files.zip
Length Date Time Name
--------- ---------- ----- ----
0 2021-02-22 13:46 common/
41 2021-02-22 13:50 common/file1.py
41 2021-02-22 13:50 common/file3.py
41 2021-02-22 13:50 common/file2.py
--------- -------
123 4 files
您还需要做的一件事是将 zip 文件添加到 Python 的导入搜索路径:
$ PYTHONPATH=/absolute/path/to/common_files.zip python
然后导入应该可以工作:
>>> from common.file1 import func1
>>> func1()
This is func1
>>> from common import file2
>>> file2.func2()
This is func2