1

安装程序.py

from distutils.core import setup
import py2exe

setup(console=['program.py'])

错误

Traceback (most recent call last):
File "program.py", line 427, in <module>
File "program.py", line 242, in __init__
WindowsError: [Error 267] The directory name is invalid: 'C:\\Users\\Bob\applications\\Program\\test\\v0.6\\dist\\library.zip/*.*'

目录名称是指名为的 zip 文件library,该文件位于 dist 文件夹中,并在编译期间创建。

program.py 的第 240 - 246 行

 file_list = []
 root_dir = sys.path[0]
 for path in os.listdir(root_dir):
    full_path = os.path.join(root_dir, path).lower()
    if os.path.isfile(full_path) and full_path.endswith('txt'):
        # create list of (filename, dir) tuples
        file_list.append((path.lower(), full_path))

program.py 的第 427 行

gui = GuiTk(win)

任何想法是什么导致了问题?我使用 Windows 7 64Bit 和 PortablePython 2.7.2.1 创建可执行文件。编译过程中没有其他错误。

4

1 回答 1

1

您正在尝试列出 中的项目sys.path()。来自文档:

sys.path 指定模块搜索路径的字符串列表。从环境变量 PYTHONPATH 初始化,加上依赖于安装的默认值。

在程序启动时初始化时,此列表的第一项 path[0] 是包含用于调用 Python 解释器的脚本的目录。如果脚本目录不可用(例如,如果交互调用解释器或从标准输入读取脚本),path[0] 是空字符串,它指示 Python 首先搜索当前目录中的模块。请注意,脚本目录是在 PYTHONPATH 插入的条目之前插入的。

对于像您这样的 py2exe 可执行文件,sys.path是一个包含 library.zip 路径的列表(包含在您的安装中找到的所有纯源模块 py2exe 的存档,您的可执行文件可能需要这些模块才能工作)。
但是您不能使用 zip 存档作为路径os.listdir

>>> import os
>>> d = 'C:\\test.zip'
>>> os.listdir(d)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
WindowsError: [Error 267] El nombre del directorio no es válido: 'C:\\test.zip/*.*'
>>> 

可能您不是在寻找 sys.path 而是在寻找变量名称所指示的“当前目录”。
如果是这种情况,那么os.getcwd将完成这项工作

于 2012-06-16T10:30:41.057 回答