首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置python模块权限(python安装安装)

设置python模块权限(python安装安装)
EN

Stack Overflow用户
提问于 2010-05-02 23:39:27
回答 3查看 1.6K关注 0票数 1

我正在为要安装在一组异构资源上的python模块配置一个基于distutils的setup.py。由于异构性,每个主机上安装模块的位置并不相同,但是disutils会选择特定于主机的位置。

我发现该模块是在没有o+rx权限的情况下使用disutils安装的(尽管在运行setup.py之前设置了umask )。一种解决方案是手动纠正这个问题,但是我希望在异构安装目标上工作的自动方法。

例如,有没有办法从setup.py中提取安装的结束位置?

还有其他建议吗?

EN

回答 3

Stack Overflow用户

发布于 2010-05-03 00:08:53

我对disutils不是很了解,但我猜如果你深入研究它,直到你找到你的文件被写入的地方,你会在该行上看到path变量。

this page可能会对您有所帮助

票数 0
EN

Stack Overflow用户

发布于 2010-05-03 15:33:19

os.path.dirname(__file__)可能就是你要找的。模块中的__file__返回加载模块的路径。

假设您的模块是一个包含Something.py的文件夹,在setup.py中:

代码语言:javascript
运行
复制
import os
#setup(...) call here
from yourmodule import Something
print os.path.dirname(Something.__file__)

唯一的问题是,如果您的文件结构将您的模块与setuputils放在同一目录中。在这种情况下,python加载器将优先从当前目录加载yourmodule.Something。

有两个有点古怪但有效的选择来颠覆这两个选项

  1. 从python路径中删除当前目录,强制它从当前存在于站点包中的文件中加载:

import sys sys.path = sys.path1:

  • Temporarily在import语句之前重命名sys.path文件夹。

对于选项1,整个过程是:

代码语言:javascript
运行
复制
import os
import sys

#setup(...) call here

#Remove first entry in sys.path which is current folder (probably impl dependent, but for practical purposes is consistent)
sys.path = sys.path[1:]
from yourmodule import Something
print os.path.dirname(Something.__file__)

我刚刚用我的一台setup.py测试了它,它工作得很好。祝好运!

票数 0
EN

Stack Overflow用户

发布于 2011-10-28 23:00:57

我发现使用disutils在没有o+rx权限的情况下安装模块

我现在不记得distutils是按原样复制文件的权限,还是只是复制内容。

(尽管在运行setup.py之前设置了umask )

我不确定umask和从Python复制文件应该如何交互;umask是否适用于系统调用,或者Python代码是否需要显式地注意到它?

例如,有没有一种方法可以从setup.py中提取安装的结束位置?

有一个,有点复杂。你会用这些信息做什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2753966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档