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

时间:2015-08-09 08:31:09

标签: python

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

  

/abc/main_menu.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模块,同时引入第10个选项main /abc/main_menu.py模块。正如您在main_menu.py上面的代码中看到的那样,我给出了第10个选项:

打印(“\ t \ t \ t \ t \ t10。使用第一个模块。”)

问题是:我怎样才能通过这种方式调用第一个模块?

1 个答案:

答案 0 :(得分:2)

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

import sys
sys.path.append('/xyz')
import first
# eventually in you want to clean sys.path after the import
sys.path.remove('/xyz')

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

如果您在一个应用程序(或构成库)中使用多个模块,则可以选择将它们组织为package