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() 的输出,它显示 cwdC:\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