我有一堆从导入的类创建的对象
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)。
我正在尝试使用 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) 我试图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什么?我应该完全使用另一个类吗?