如何在python包中设置路径

如何在python包中设置路径,python,package,Python,Package,我正在创建一个,首先在本地安装它python setup.py develop调用该程序时遇到问题 >>> import cstm.artefact as art >>> art.what_is('Objname', 'en') Traceback (most recent call last): File "<input>", line 1, in <module> File "/home/guinsly/developmen

我正在创建一个,首先在本地安装它
python setup.py develop
调用该程序时遇到问题

>>> import cstm.artefact as art
>>> art.what_is('Objname', 'en')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/guinsly/development/public/project/jeunesse/canadian_science_and_t
echnology_museum_api/cstm/artefact.py", line 56, in what_is
    valeur = open_file(keywords, lang)
  File "/home/guinsly/development/public/project/jeunesse/canadian_science_and_t
echnology_museum_api/cstm/artefact.py", line 24, in open_file
    book = xlrd.open_workbook(path)
  File "/usr/lib/python2.7/dist-packages/xlrd/__init__.py", line 394, in open_wo
rkbook
    f = open(filename, "rb")
IOError: [Errno 2] No such file or directory: '/home/guinsly/cstm/data/data.xls'
问题:如何在此函数上正确设置路径

def open_file(keywords, lang = 'en'):
    """
    Open and read an Excel file
    """
    directory = os.getcwd()
    path = directory+"/cstm/data/data.xls"

....

您使用的是相对于当前工作目录的路径,而不是相对于项目的路径。当前工作目录由用户设置(例如,基于其在终端中的当前位置)

使用模块的
\u文件\u
全局来确定模块位置:

import os

module_path = os.path.dirname(os.path.abspath(__file__))
并将文件路径设置为相对于该路径的基准:

path = os.path.join(module_path, "cstm/data/data.xls")
path = os.path.join(module_path, "cstm/data/data.xls")