Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果两个模块位于不同的目录中,则将一个模块调用到另一个模块_Python - Fatal编程技术网

Python 如果两个模块位于不同的目录中,则将一个模块调用到另一个模块

Python 如果两个模块位于不同的目录中,则将一个模块调用到另一个模块,python,Python,我在以下位置有两个python模块: /abc/主菜单.py /xyz/first.py 其中,与main_menu.py一样,我有一些功能: def print_menu(): print " " print bcolors.OKBLUE + '\t\t\t\t' + (52 * '*') + bcolors.OKBLUE print ("\t\t\t\t\t\tM A I N - M E N U") print '\t\t\t\

我在以下位置有两个python模块:

/abc/主菜单.py

/xyz/first.py

其中,与main_menu.py一样,我有一些功能:

def print_menu():
        print " "
        print bcolors.OKBLUE + '\t\t\t\t' + (52 * '*') + bcolors.OKBLUE
        print ("\t\t\t\t\t\tM A I N - M E N U")
        print '\t\t\t\t' + (52 * '*')
        print ("\t\t\t\t 0. Enter List Name(s).")
        print ("\t\t\t\t 1. Check List Connectivity.")
        print ("\t\t\t\t 2. Set All Lists.")
        print ("\t\t\t\t 3. Remove All Lists.")
        print ("\t\t\t\t 4. Set Blackouts on Lists.")
        print ("\t\t\t\t 5. Check Blackout Status.")
        print ("\t\t\t\t 10. To Use first module.")

def List():
        # Do some stuff
        # Do some stuff

def status():
        # Do some stuff
        # Do some stuff

def connectivity():
        # Do some stuff
        # Do some stuff


while choice >= 0 and choice < 5:
        if choice == 0:
            List()
        if choice == 1:
            connectivity()
        if choice == 5:
            status()
我希望在main_menu.py中调用first.py文件,其中first.py文件具有一些其他功能。 我需要在/abc/main_menu.py中调用/xyz/first.py模块,同时引入第十个选项main/abc/main_menu.py模块。正如您在main_menu.py的上述代码中看到的,我给出了第10个选项:

打印\t\t\t\t 10。使用第一个模块


问题是:如何通过这种方式调用第一个模块?

只需将要从中导入的文件夹添加到sys.path:

但你并不是真的想这么做:它不是蟒蛇式的。正确的方法是将其他模块可以使用的所有模块放在一些文件夹中,并在PYTHONPATH环境变量中注册这些文件夹。它允许编写可移植脚本


如果您是一个应用程序中使用的多个模块或构成一个库,那么另一种选择是将它们组织成一个库。

我通过调用first.py解决了这个问题,比如:if choice==10:os.system'python/xyz/first.py'
import sys
sys.path.append('/xyz')
import first
# eventually in you want to clean sys.path after the import
sys.path.remove('/xyz')