如何从Python中的其他项目中导入的功能呢?(How to import functions fr

2019-07-18 15:56发布

我有我想在另一个项目中重用其中一个项目的一些代码。 我需要做什么做的(这两个文件夹),这样我可以做到这一点?

目录结构是这样的:

    • PROJECT1
      • file1.py
      • file2.py
  • 酒吧
    • 项目2
      • fileX.py
      • fileY.py

我想用从file1.py和file2.py功能fileX.py和fileY.py。

Answer 1:

理想的情况是这两个项目将是一个安装Python包,充满了__init__.py和setup.py。 他们然后可以安装python setup.py install或相似。

如果这是不可能的, 使用execfile() 操纵PYTHONPATHFoo ,使import Project1.file1工作。

例如,从Project2中/ fileX.py:

from os import path
import sys
sys.path.append(path.abspath('../Foo'))

from Project1.file1 import something

然而, 真正的答案是让每一个独立安装包。



Answer 2:

你可能想使一个模块出来的,然后汇入你从它需要的任何。



Answer 3:

有很多怎么回事。 你应该阅读有关Python包和模块管理http://docs.python.org/2/tutorial/modules.html#packages但其基本思想是,文件X需要知道文件1和文件2是为了使用它们。

要打开一个文件夹成一个包,它只是需要包含__init__.py文件。 我会建议你做的是(在终端)

$ touch Foo/__init__.py
$ touch Foo/Project1/__init__.py

(假设你使用的Unix / Linux)。

后来不知怎的,文件X需要知道的Foo包。 您可以拨打sys.path.append(PATH)其中path是富的位置。

终于里面fileX.py你必须

import sys
sys.path.append(PATH) #replace PATH with the path to Foo

from Foo.Project1 import file1

#use its functions
file1.function_name(argument)

如果你真的只想说function_name没有前述file1. 你可以这样导入它的所有功能from Foo.Project1.file1 import *但是注意, from module import * 高度时,因为它混合名字皱了皱眉,使代码的可读性和可理解



Answer 4:

你把你想在这两个项目中使用的代码,你把它变成一个模块 ,您提取到第三个单独的项目。 该项目您制作成包,你可以独立工作的。 然后,释放它的版本,并在其他项目中重用他们。

重要的是,你有你“释放”,这样就可以跟踪哪个版本的每个项目采用模块的版本。 否则,你将在一个旧的项目停止工作,因为你已经做出了共同的模块不兼容的改变的情况下结束。

如果不是只为你,但别人一般可用,可以考虑将其上传到PyPI中 。



Answer 5:

我想你可以添加Foo利用当前的Python的路径os.path.join()os.path.append()from import Project1.file1 import function_name



文章来源: How to import functions from other projects in Python?
标签: python import