小编Nat*_*ini的帖子

腌制动态导入的类

我有一堆从导入的类创建的对象

module = imp.load_source(packageName, packagePath)
Run Code Online (Sandbox Code Playgroud)

我要泡菜 只要packagePath直接在Python路径或工作目录中,一切都可以完美工作。

但是一旦我将其移动到其他地方,我就会感到恐惧

ImportError: No module named test_package
Run Code Online (Sandbox Code Playgroud)

我尝试添加一种__reduce__将类作为第一个值返回的方法。我尝试使用dill,它应该能够序列化完整的类,而不是对该类的简单引用(并且我尝试将其与结合使用__reduce__)。

当前的工作方式是,将它们与包路径一起双击在一个负责导入包的对象中:

class Container(object):

    def __init__(self, packagePath, packageName, objectsDump= None):
        self.package = imp.load_source(packageName, packagePath)
        self.packagePath = packagePath
        self.packageName= packageName
        if objectsDump is not None:
            self.objects = dill.loads(objectsDump)

    def __reduce__(self):
        return (self.__class__,
               (self.packagePath, self.packageName, dill.dumps(self.objects))
Run Code Online (Sandbox Code Playgroud)

我发现这种方式确实令人费解,我想知道:是否有更Python化的方式来实现这一目标?

注意:所有这些都发生在Python 2.7.10,莳萝0.2.6中。所有要序列化的对象都是新型对象(继承自object)。

python serialization dynamic-loading python-2.7 dill

5
推荐指数
0
解决办法
200
查看次数

将 --tag-build 或 --tag-date 传递给 setuptools PEP 517 构建器

我正在尝试使用 Setuptools 和 Build(PEP 517 构建模块)创建 Python 包的快照/每日构建。

我尝试改编Setuptools文档的这一部分:https://setuptools.pypa.io/en/latest/userguide/distribution.html#tagging-and-daily-build-or-snapshot-releases

但是,以下命令均无效:

python -m build --config-setting=--tag-date myproject
python -m build --config-setting=tag-date myproject
python -m build --tag-date myproject
Run Code Online (Sandbox Code Playgroud)

前两个构建没有版本标记的包,而第三个是错误的。--tag-build当我使用代替 时,结果是相同的--tag-date

如果上述选项都不起作用,我如何告诉Setuptools添加版本标签?

我没有setup.py,只有一个setup.cfg我无法使用setup.py bdist_wheel --tag-date,此命令会显示“找不到文件”,因为setup.py我的项目中不存在该文件。

在搜索Setuptools问题跟踪器后进行编辑,我还尝试了以下命令,但没有成功:

python -m build --config-setting=--global-options=--tag-date myproject
python -m build --config-setting=--global-options=tag-date myproject
python -m build --config-setting=global-options=--tag-date myproject
python -m build --config-setting=global-options=tag-date myproject
Run Code Online (Sandbox Code Playgroud)

python versioning setuptools python-packaging pep517

5
推荐指数
1
解决办法
1857
查看次数

更改 IStringLocalizer 的语言

我试图IStringLocalizer在运行时动态设置语言。似乎可以做到这一点的唯一可用方法是IStringLocalizer.WithCulture. 但是,尝试使用它会导致弃用警告。

public IStringLocalizer GetLocalizer(string locale) {
    this.localizerFactory.Create(typeof(CommonResources)).WithCulture(new CultureInfo(locale));
}
Run Code Online (Sandbox Code Playgroud)

没有使用 ASP,而是在IHostedService处理来自另一个来源(各种网络聊天 API)的用户交互中执行此操作。此服务需要符合管理员为聊天服务器或频道设置的语言(存储在数据库中)。

设置 . 语言的正确的当前方法是IStringLocalizer什么?我应该完全使用另一个类吗?

c# internationalization .net-core

2
推荐指数
2
解决办法
2401
查看次数