我在项目中有一些代码,我想在另一个项目中重用.我需要做什么(在两个文件夹中),以便我可以这样做?
目录结构类似于:
我想在fileX.py和fileY.py中使用file1.py和file2.py中的函数.
Rob*_*wie 29
理想情况下,两个项目都是一个可安装的python包,充满了__init__.py和setup.py.然后可以安装python setup.py install或类似.
如果那是不可能的,请不要使用execfile()!操纵PYTHONPATH要添加Foo以便import Project1.file1工作.
例如,从Project2/fileX.py:
from os import path
import sys
sys.path.append(path.abspath('../Foo'))
from Project1.file1 import something
Run Code Online (Sandbox Code Playgroud)
然而,真正的答案是使每个都成为一个独立的可安装包.
这里有很多事情要做.你应该阅读python包和模块管理http://docs.python.org/2/tutorial/modules.html#packages,但基本的想法是fileX需要知道file1和file2的位置才能使用它们.
要将文件夹转换为包,它只需要包含一个__init__.py文件.我建议你做的是(在一个终端)
$ touch Foo/__init__.py
$ touch Foo/Project1/__init__.py
Run Code Online (Sandbox Code Playgroud)
(假设你使用的是unix/linux).
然后不知何故,fileX需要知道Foo包的位置.你可以调用sys.path.append(PATH)PATH是Foo的位置.
最后你在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)
Run Code Online (Sandbox Code Playgroud)
如果你真的想在function_name没有前面的情况下说,file1.你可以通过说明导入它的所有功能from Foo.Project1.file1 import *但请注意,因为它混合了名称并使代码不易读和易懂,from module import *所以非常不满意
| 归档时间: |
|
| 查看次数: |
27519 次 |
| 最近记录: |