微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

压缩来自不同项目的文件和文件夹并导入另一个项目

如何解决压缩来自不同项目的文件和文件夹并导入另一个项目

我有以下方式的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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。