相关疑难解决方法(0)

Python 2:从驱动器号获取网络共享路径

如果我使用以下内容获取所有已连接驱动器的列表:

available_drives = ['%s:' % d for d in string.ascii_uppercase if os.path.exists('%s:' % d)]
Run Code Online (Sandbox Code Playgroud)

如何获取已连接驱动器的UNC路径?

os.path只是返回z:\而不是\share\that\was\mapped\to\z

python unc network-share python-2.7

11
推荐指数
2
解决办法
4438
查看次数

pyinstaller exe 识别相对路径而不是绝对路径

我正在使用 pyinstaller 从脚本创建 EXE。脚本和exe的位置如下:

脚本:root-dir\subdir1\subdir2\src\scriptabc.py

exe:root-dir\subdir1\subdir2\exe\scriptabc.exe

要创建 Exe,我从 Exe 目录运行 cmd 命令。

pyinstaller -F -i ABC.ico "..\src\scriptabc.py" 
Run Code Online (Sandbox Code Playgroud)

生成的文件在 Exe 文件夹中正确创建,可执行文件在 dist 文件夹中。然后我将可执行文件复制到 Exe 文件夹中,使其与 src\scriptabc.py 文件处于相同的深度级别,并参考根目录。

当我运行 exe 时,我使用相对路径的所有代码项,例如

wb_assets = load_workbook(filename = '..//input//01_assets.xlsx')
Run Code Online (Sandbox Code Playgroud)

运行就好。

但是,当代码使用 pathlib 进行绝对路径评估时,它失败并显示以下错误:

File "pathlib.py", line 587, in __getitem__
IndexError: 3
[8920] Failed to execute script scriptabc
Run Code Online (Sandbox Code Playgroud)

我正在使用 pathlib 建立根目录的绝对路径,如下所示:

from pathlib import Path

abspath = Path(__file__).resolve() # resolve to relative path to absolute
rootpath = abspath.parents[3] # root-dir
Run Code Online (Sandbox Code Playgroud)

一旦我建立了根路径,有很多代码会为其他子目录创建路径。

所以这个索引号在使用 src*.py 文件夹时工作正常 为什么它会为位于 exe*.exe …

python windows pyinstaller pathlib

5
推荐指数
0
解决办法
1610
查看次数

标签 统计

python ×2

network-share ×1

pathlib ×1

pyinstaller ×1

python-2.7 ×1

unc ×1

windows ×1