- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 zypp 的 python 包。它是通过 swig 生成的,rpm 包(称为 python-zypp)将其放入:
rpm -ql python-zypp
/usr/lib64/python2.6/site-packages/_zypp.so
/usr/lib64/python2.6/site-packages/zypp.py
现在,我有一个不同的项目,它提供了额外的 API 集。纯 python 。再加上一些脚本。
布局是:
bin/script1
python
python/zypp
python/zypp/plugins.py
python/zypp/__init__.py
plugins.py 包含一个 Plugin 类。我打算将其放入 rpm 中,并将其放入
/usr/lib64/python2.6/site-packages/zypp/plugins.py
script1 使用此 Plugin 类。但是当我测试它从 git 运行时,我希望它也能从 git 找到该模块(如果未安装)。所以它有这样的内容:
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '../python'))
from zypp.plugins import Plugin
但是,如果 python-zypp 安装在/usr/lib64/python2.6/site-packages/zypp.py 上,则 script1 将不再找到插件子模块。如果我卸载 python-zypp,就会出现这种情况。
所以我的问题是是否可以通过添加子模块来扩展模块,因为子模块位于不同的加载路径中。或者他们总是会发生冲突?
打个比方,我有一个模块 foo。我在不同的加载路径中提供 foo.extras (实际上可能使用 foo )。如果 foo 在系统加载路径中首先找到,则脚本将找不到 foo.extras。如果我只使用自定义加载路径,如果 foo.extras 使用它,脚本可能找不到 foo 模块。
我对 ruby 有更多经验,但在 ruby 中我可以安装:
/usr/lib64/ruby/gems/1.8/gems/foo-1.0/lib/foo/*
我可以在我的脚本中添加:
bin/script
lib/foo/extras/*
我可以在脚本中执行以下操作:
$: << File.join(File.dirname(__FILE__), "../lib"
然后我的脚本就可以
require foo
require foo/extras
无论 foo/extras 是否安装在系统上或自定义加载路径中。他们不冲突。
相反,我发现使用 PYTHONPATH 首先找到本地 zypp.plugins。但随后找不到已安装的zypp模块:
import zypp # works, but seems to import the local one
from zypp.plugins import Plugin # works, PYTHONPATH finds it first
repoinfo = zypp.RepoInfo() # does not work
最佳答案
如果我正确理解您的问题,您想使用该模块的开发版本而不是已安装的模块。因此,您可以使用
PYTHONPATH
来自Module Search Path documentation :
When a module named spam is imported, the interpreter searches for a file named spam.py in the current directory, and then in the list of directories specified by the environment variable PYTHONPATH. This has the same syntax as the shell variable PATH, that is, a list of directory names. When PYTHONPATH is not set, or when the file is not found there, the search continues in an installation-dependent default path; on Unix, this is usually .:/usr/local/lib/python.
因此,如果模块目录的 GIT 树是“/home/username/some/path”,则可以将 PYTHONPATH 更改为“/home/username/some/path”。或者,如果 PYTHONPATH 变量已在使用中,您将在其后面附加“:/home/username/some/path”(注意冒号分隔符)。为了使其永久化,请将行“PYTHONPATH=value”添加到文件“/etc/environment”中。
sys.path.insert
如果您的程序有启动脚本,则可以使用 sys.path.insert(0, "somepath") 覆盖模块搜索路径。这与您描述的 sys.path.append 调用类似,但将路径插入列表的开头。
关于python - 从不同路径添加子包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3829779/
我有这个 html 代码: HELLO WORLD! X V HELLO WORLD! X V 我想按 X(类关闭)将父 div 的高度更改为 20px 并显示 V(类打开),但在每个 d
在会计应用程序的许多不同实现中,有两种主要的数据库设计方法来保存日志和分类帐数据。 只保留 Journal 信息,然后 Ledger 只是 Journal 的一个 View (因为 journal 总
我想在另一个子里面有一个子, sub a { sub b { } } 我想为每次调用 sub b 创建一个新的 sub a 实例。有没有办法在 Perl 中做到这一点? 当我运行上面的
我有一些代码正在查找重复项并突出显示单元格: Private Sub cmdDups_Click() Dim Rng As Range Dim cel As Range Set Rng = ThisW
可能有一个简单的解决方案,但我很难过。 我有一个包含一个 ID 字段的主表。在两个可能的字段中有一个具有该 ID 的子表。想象一个由选手 A 和选手 B 组成的 double 队。Master 表将有
假设我有一个包含对象的数组: [ { "id": "5a97e047f826a0111b754beb", "name": "Hogwarts", "parentId": "
我正在尝试对 MySQL 数据库表执行一对父/子模型的批量插入,但似乎无法使用标准的 ActiveRecord 功能来完成。所以,我尝试了 activerecord-import gem,但它也不支持
我有一个带有多个子类的父抽象类。最终,我希望通过 GUI 中的进度条显示子类中完成的进度。 我目前所做的,我意识到这是行不通的,是在父类中声明为每个子类将覆盖的虚拟方法的事件方法定义。所以像: pub
是否可以通过键数组在对象中设置变量?例如我有这个对象: var obj = {'outer': {'inner': 'value'} }; 并希望设置由键数组选择的值: var keys = ['ou
我有一个名为 companies 的 MySQL 表,如下所示: +---------+-----------+-----------+ | id_comp | comp_name | id_pare
我正在尝试使用 sublime text 在 sublime text 上的 ionic 上打开我的第一个应用程序。它给了我一个“找不到命令”的错误。如何修复? 我试过这些命令: sudo rm -r
不好意思问,但我正在使用 webapp2,我正在设计一个解决方案,以便更容易定义路由 based on this google webapp2 route function .但这完全取决于能够在子级
我有代表树的数字字符串(我不知道是否有官方名称): 012323301212 上面的例子代表了 2 棵树。根用 0 表示。根的直接子代为“1”,“1”的直接子代为“2”,依此类推。我需要将它们分组到由
是否可以在当前 Activity 之上添加 Activity 。例如,假设我单击一个按钮,然后它将第二个 Activity 添加到当前 Activity 。而第二个 Activity 只覆盖了我当前
我很难思考如何为子资源建模。 以作者的书籍为例。你可以有 N 本书,每本书只有一位作者。 /books GET /books POST /books/id PUT /books/id DELETE 到
有人可以向我解释以下内容(python 2.7) 来自已解析文件的两个字符串数字: '410.9''410.9 '(注意尾随空格) A_LIST = ['410.9 '] '410.9' in '41
背景 在 PowerShell 中构建 hash table 是很常见的通过特定属性快速访问对象,例如以 LastName 为基础建立索引: $List = ConvertFrom-Csv @' I
我真的很难弄清楚如何调用嵌套 Polymer Web 组件的函数。 这是标记: rise-distribution组件有 canPlay我想从 rise-playlist
我写了一个小工具转储(以 dot 格式)一个项目的依赖关系图,其中所有位于同一目录中的文件都聚集在一个集群中。当我尝试生成包含相应图形的 pdf 时,dot开始哭: 命令 dot -Tpdf trim
给定一个 CODE ref,是否可以: 访问该 CODE ref 的解析树 通过指定 CODE ref 的解析树来创建一个新的 CODE ref,该解析树可以包含在 1 中返回的解析树的元素 通常我们
我是一名优秀的程序员,十分优秀!