PyPi包的当前工作目录是root用户文件夹?如何使cwd成为包的目录?
Current working directory of PyPi package is root user folder? How to make cwd the package's directory?
我有一个自定义的 PyPi
包。它安装在 Pyhon\Python38\Lib\site-packages\myCustomPackage
.
下
在 myCustomPackage
的 __init__
代码中,我执行了几个不同的目录操作,但未能找到驻留在 Pyhon\Python38\Lib\site-packages\myCustomPackage
文件夹中的正确文件和目录。
我查看了 os.getcwd()
的输出,它显示 cwd
为 C:\Users\TestUser
,这是根 Windows 用户文件夹。
我希望根文件夹是 myCustomPackage
文件夹。
例如,文件 \myCustomPackage\__init__.py
将包含
import os
class myCustomPackage():
def __init__(self):
print(os.getcwd())
如果我运行:
from myCustomPackage import myCustomPackage
theInstance = myCustomPackage()
输出为:
C:\Users\TestUser
如何将其更改为 C:\Users\TestUser\AppData\Local\Programs\Python\Python38\Lib\site-packages\myCustomPackage
?
注意:我希望它是动态的。没有硬编码,以防 python 版本更改或 Windows 用户更改。
获取当前模块的目录路径,可以使用built-in __file__
.
要将 cwd
设置为模块目录,请使用:
import os
import sys
from pathlib import Path
class myCustomPackage():
def __init__(self):
module_directory = Path(__file__).parent
os.chdir(module_directory)
print(os.getcwd())
我的解决方案是以下函数:
import site
import os
import traceback
def changeCWD(self):
try:
sitePackages = site.getsitepackages()
site_packages_dir = sitePackages[1]
top_module_dir = site_packages_dir + os.path.sep + "myCustomPackage"
os.chdir(top_module_dir)
return True
except:
self.myLogger.error("An error occurred in changeCWD")
tb = traceback.format_exc()
self.myLogger.exception(tb)
return False
我有一个自定义的 PyPi
包。它安装在 Pyhon\Python38\Lib\site-packages\myCustomPackage
.
在 myCustomPackage
的 __init__
代码中,我执行了几个不同的目录操作,但未能找到驻留在 Pyhon\Python38\Lib\site-packages\myCustomPackage
文件夹中的正确文件和目录。
我查看了 os.getcwd()
的输出,它显示 cwd
为 C:\Users\TestUser
,这是根 Windows 用户文件夹。
我希望根文件夹是 myCustomPackage
文件夹。
例如,文件 \myCustomPackage\__init__.py
将包含
import os
class myCustomPackage():
def __init__(self):
print(os.getcwd())
如果我运行:
from myCustomPackage import myCustomPackage
theInstance = myCustomPackage()
输出为:
C:\Users\TestUser
如何将其更改为 C:\Users\TestUser\AppData\Local\Programs\Python\Python38\Lib\site-packages\myCustomPackage
?
注意:我希望它是动态的。没有硬编码,以防 python 版本更改或 Windows 用户更改。
获取当前模块的目录路径,可以使用built-in __file__
.
要将 cwd
设置为模块目录,请使用:
import os
import sys
from pathlib import Path
class myCustomPackage():
def __init__(self):
module_directory = Path(__file__).parent
os.chdir(module_directory)
print(os.getcwd())
我的解决方案是以下函数:
import site
import os
import traceback
def changeCWD(self):
try:
sitePackages = site.getsitepackages()
site_packages_dir = sitePackages[1]
top_module_dir = site_packages_dir + os.path.sep + "myCustomPackage"
os.chdir(top_module_dir)
return True
except:
self.myLogger.error("An error occurred in changeCWD")
tb = traceback.format_exc()
self.myLogger.exception(tb)
return False