Setuptools已安装的脚本找不到文本文件

时间:2015-06-03 18:32:16

标签: python-2.7 setuptools

我正在尝试使用setuptools创建一个包。软件包安装正确,我可以看到日志复制.txt文件。但是当脚本试图打开它时,它会给出“没有这样的文件或目录”错误。

文本文件名是“stopwords.txt”

Hierarichy:
   wcounter
        |
        --setup.py
        --MANIFEST.in
        --README.md
        --wcounter
             |
             --module1.py
             --module2.py
             --stopwords.txt

Setup.py

from setuptools import setup, find_packages 
<br>
<br>
setup( name = "wcounter",<br> 
        version = "1.0",<br> 
        packages = find_packages(),<br> 
        package_data = {"": ["stopwords.txt"]},<br> 
        include_package_data = True, <br>
        zip_safe = True, <br>
        entry_points = {'console_scripts' : ['wcount = wcounter.wcounter:main'],},<br>
)

我正在尝试使用文件IO访问该文件。 恩。 f = open(“stopwords.txt”,“r)

1 个答案:

答案 0 :(得分:0)

在python中,当使用相对路径打开文件 - open("stopwords.txt", "r")时 - 路径将相对于当前工作目录,而不是文件从中打开的python文件。

例如,请考虑以下脚本:

C:\temp> python C:\path\to\myscript.py

如果myscript.py尝试open('stopwords.txt'),则会C:\temp\stopwords.txt,而不是C:\path\to\stopwords.txt

您需要明确引用stopwords.txt的完整路径。您可以使用魔术__file__属性来执行此操作。

例如,如果您尝试在示例中从module1.py打开文件,则可以

import os
fp = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'stopwords.txt')
open(fp, 'r')

os.path.abspath确保它是完整路径(在某些情况下,__file__将是相对路径。)

os.path.dirname获取模块名称的目录部分 - C:\Python27\lib\site-packages\wcounter

os.path.join将目录和文件名连接在一起,形成一个完整的绝对路径。