如何将文件从Python包(站点包)复制到目录?
情况是这样的:我有一个Python库,用于使用自定义协议与其他硬件通信。无论谁使用这个解决方案,都需要一个C代码库来实现通信的另一端 我认为一个简单的方法是将文件放在Python包中,并提供一个命令将文件复制到所选目录。这些文件已正确绑定,但我不知道如何访问它们。我希望事情会这么简单:如何将文件从Python包(站点包)复制到目录?,python,python-3.x,setuptools,Python,Python 3.x,Setuptools,情况是这样的:我有一个Python库,用于使用自定义协议与其他硬件通信。无论谁使用这个解决方案,都需要一个C代码库来实现通信的另一端 我认为一个简单的方法是将文件放在Python包中,并提供一个命令将文件复制到所选目录。这些文件已正确绑定,但我不知道如何访问它们。我希望事情会这么简单: # 'pkgname' is a placeholder for package in site-packages. shutil.copy('pkgname' + os.sep + 'filename', os
# 'pkgname' is a placeholder for package in site-packages.
shutil.copy('pkgname' + os.sep + 'filename', os.getcwd())
但我得到:
FileNotFoundError: [Errno 2] No such file or directory: 'pkgname\\filename'
关于如何解决拷贝问题有什么建议吗?还是问题本身?找到了有效的解决方案,我要找的主要是第一行:
pkgdir = sys.modules['<mypkg>'].__path__[0]
fullpath = os.path.join(pkgdir, <myfile>)
shutil.copy(fullpath, os.getcwd())
pkgdir=sys.modules[''']。\uuuuu路径\uuuu[0]
fullpath=os.path.join(pkgdir,)
复制(完整路径,os.getcwd())
还犯了一个愚蠢的错误,没有导入有问题的模块;我想最难找到明显的bug。找到了一个有效的解决方案,我要找的主要是第一行:
pkgdir = sys.modules['<mypkg>'].__path__[0]
fullpath = os.path.join(pkgdir, <myfile>)
shutil.copy(fullpath, os.getcwd())
pkgdir=sys.modules[''']。\uuuuu路径\uuuu[0]
fullpath=os.path.join(pkgdir,)
复制(完整路径,os.getcwd())
还犯了一个愚蠢的错误,没有导入有问题的模块;我想最难找到明显的bug。你真的有文件夹名
'pkgname\\filename'
?!当然不是,这只是告诉你它是什么。我写会更好吗?我认为需要指定它,因为站点包位于sys.path中。文件在包中。您需要使用os.path
对象(如join
)和dirname
)构建文件夹路径,然后将其作为参数设置为copy
,是否有一种方法只知道已安装包的名称?我希望它能在多个平台(Windows、Linux)上运行。使用normpath
也可以跨平台运行,例如:normpath(join('my','path'))
你真的有文件夹名'pkgname\\filename'
?!当然不是,这只是告诉你它是什么。我写会更好吗?我认为需要指定它,因为站点包位于sys.path中。文件在包中。您需要使用os.path
对象(如join
)和dirname
)构建文件夹路径,然后将其作为参数设置为copy
,是否有一种方法只知道已安装包的名称?我希望它能在多个平台(Windows、Linux)上运行。使用normpath
也可以跨平台运行,例如:normpath(join('my',path'))