命名空间包的主题似乎对于初学者来说有点混乱,并且它的先前版本的Python以几种不同的方式实现它或者StackOverflow上的许多问答都是过时的并没有帮助.我正在寻找Python 3.5或以后的解决方案.
我正在将一堆Python代码重构为模块和子模块,并且努力使这些项目中的每一个都设置为在坐在同一名称空间中时彼此独立地运行.
我们最终将使用内部PyPi服务器,将这些软件包提供给我们的内部网络,并且不希望将它们与外部(公共)PyPi软件包混淆.
示例: 我有2个模块,我希望能够执行以下操作:
from org.client.client1 import mod1
from org.common import config
Run Code Online (Sandbox Code Playgroud)
反映的模块将分开:
存储库1:
org_client_client1_mod1/
setup.py
mod1/
__init__.py
somefile.py
Run Code Online (Sandbox Code Playgroud)
存储库2:
org_common_config/
setup.py
config/
__init__.py
someotherfile.py
Run Code Online (Sandbox Code Playgroud)
我的Git仓库已经设置为org_client_client1_mod1和org_common_config,所以我只需要在包装和执行安装__init__.py文件,我相信.
随着
__init__.py,我应该使用哪些(如果有的话)?:Run Code Online (Sandbox Code Playgroud)from pkgutil import extend_path __path__ = extend_path(__path__, __name__)要么:
Run Code Online (Sandbox Code Playgroud)import pkg_resources pkg_resources.declare_namespace(__name__)
有
setup.py,我还需要添加namespace_modules参数,如果是,我会使用namespace_modules=['org.common'],还是namespace_modules=['org', 'common']?
我可以通过以某种方式实现这一点而放弃以上所有内容吗?也许是更简单或更"pythonic"的东西?
最近有一个项目引发了我的方式,包括编写几个(支持Linux的)嵌入式设备,为它们部署软件,以及允许在git repo中更新代码库时更新应用程序.
最初的想法是为每个设备制作一个标准图像,然后我开始尝试在UDOO Quad和Intel Edison上安装docker,但是到目前为止还没有任何成功.
我的想法是,在嵌入式设备上安装Docker似乎是一个好主意 - 但如果是这样的话,那么它肯定会被移植到现在.Resin.io是唯一一个似乎在做这些努力的团体.
有没有我缺少的东西,或者有没有明确的理由说明Docker在嵌入式设备上没有意义?如果没有理由,并且在嵌入式系统上运行Docker 确实有意义,那么我是否忽略了一些问题:是否有任何关于移植的讨论来源,或者如何解决这个问题?
我正在运行一个nginx服务器和一个节点表达web服务器,使用daemontools,setup通过Unix Domain Sockets进行通信.只有一些问题:
如果我chgrp和chmod g + w套接字文件,一切正常.有没有办法设置它,以便生成节点应用程序的套接字文件,并使用正确的权限让nginx能够在不损害一个应用程序或另一个应用程序的安全独立性的情况下写入它?如果还有一种方法可以设置套接字文件的权限,那么我甚至可以将nginx添加到节点用户的组中,以便它可以组写.
奇怪的是,这似乎应该已经做过:我想在键盘顶部交换– 键上的数字和符号,以便:10
*键入而不是6。6将显示数字而不是*。我还想进行其他一些修改,但很快发现其他人在使用选项之前setxkbmap(caps:swapescape例如)已经完成了这些布局修改。
鉴于以上所述,这是一个三部分的问题:
*.lst和中的*.xml文件,有没有办法找出这种情况是否存在/usr/share/X11/xkb/rules/?setxkbmap,那将是一种理想的方法,以及如何将我的选项贡献回社区?至于问题3:
setxkbmap默默地失败了,我甚至对自己的方法都不自信)。man setxkbmap涉及该主题的各种博客文章之外,我还无法找到任何有关此主题的文档。使用基于路径的资源系统,应用程序需要根据路径查找管理给定资源的第一个工作资源.我需要一种简洁,pythonic的方式来生成以下内容:
输入:
/house/dogs/ralph/bone
Run Code Online (Sandbox Code Playgroud)
输出:
/house/dogs/ralph/bone
/house/dogs/ralph
/house/dogs
/house
Run Code Online (Sandbox Code Playgroud)
注意:可以使用os.path或类似的内置函数,但这些不是文件系统资源.输出可以是任何可迭代的(列表,集合,生成器等).
我正在尝试使用Sequelize设置我现有的Express应用程序.在应用程序中,在用户登录时,我执行查询以尝试获取表示用户的对象以及来自少数几个表的几个关系.我已经使用多对多关系将我的测试下拉到以下最小化表示.
这是我的用户模型(在coffeescript中):
module.exports = (sequelize, DataTypes) ->
sequelize.define "User",
id:
type: DataTypes.INTEGER(11)
primaryKey: true
autoIncrement: true
email:
type: DataTypes.STRING
allowNull: false
,
tableName: 'users'
classMethods:
associate: (models) ->
@hasOne models.UserDetail
@hasMany models.Plan,
through: models.UserPlan
foreignKey: 'user_id'
Run Code Online (Sandbox Code Playgroud)
这是我的计划模型:
module.exports = (sequelize, DataTypes) ->
sequelize.define "Plan",
id:
type: DataTypes.INTEGER(11)
primaryKey: true
autoIncrement: true
plan:
type: DataTypes.STRING
allowNull: false
,
tableName: 'plans'
classMethods:
associate: (models) ->
@hasMany models.User,
through: models.UserPlan
foreignKey: 'plan_id'
Run Code Online (Sandbox Code Playgroud)
而且,这是中间的"通过"表(user_plans):
module.exports = (sequelize, DataTypes) ->
sequelize.define "UserPlan",
user_id:
type: DataTypes.INTEGER(11) …Run Code Online (Sandbox Code Playgroud) python ×2
containers ×1
docker ×1
express ×1
intel-edison ×1
iterable ×1
keyboard ×1
linux ×1
many-to-many ×1
mysql ×1
nginx ×1
node.js ×1
pypi ×1
python-3.x ×1
sequelize.js ×1
setuptools ×1
unix-socket ×1