【问题标题】:Setuptools Installed script cannot find text fileSetuptools 安装的脚本找不到文本文件
【发布时间】:2015-06-03 18:32:16
【问题描述】:

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

文本文件名为“stopwords.txt”

层次结构: 计数器 | --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)

【问题讨论】:

    标签: python-2.7 setuptools


    【解决方案1】:

    在 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 将目录和文件名连接在一起形成完整的绝对路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 2021-06-09
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      相关资源
      最近更新 更多