Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将文件从Python包(站点包)复制到目录?_Python_Python 3.x_Setuptools - Fatal编程技术网

如何将文件从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

情况是这样的:我有一个Python库,用于使用自定义协议与其他硬件通信。无论谁使用这个解决方案,都需要一个C代码库来实现通信的另一端

我认为一个简单的方法是将文件放在Python包中,并提供一个命令将文件复制到所选目录。这些文件已正确绑定,但我不知道如何访问它们。我希望事情会这么简单:

# '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'))