我想在无法访问互联网的生产服务器上部署python环境.
我发现了Python Anaconda发行版并安装它以试一试.安装目录是1.6GB,我可以在pkgs目录中看到有很多库.
但是,当我尝试安装环境时,conda不会在本地目录中查找...
conda create --offline --use-local --dry-run --name pandas_etl python
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata:
Solving package specifications:
Error: Package missing in current linux-64 channels:
- python
Run Code Online (Sandbox Code Playgroud)
那么,如果conda需要在在线存储库中获取它们,那么捆绑所有这些库的重点是什么?也许我错过了什么?
我正在寻找一种"包含python的大量电池",以方便部署.
注意:我使用Linux系统并安装了常规的anaconda,而不是miniconda
让我总结一下:
我有一个包含两个类的模块(注意:该模块位于一个包中):
自定义异常:
class MYAUTHError(Exception):
def __init__(self, *args, **kwargs):
print('--- MYAUTHError!!! ---')
Run Code Online (Sandbox Code Playgroud)
和一个使用此异常的类(这里是一个示例):
try:
resp_login.raise_for_status()
except requests.exceptions.HTTPError as ex:
logging.error("ERROR!!! : user authentication failed)
raise MYAUTHError('oups')
Run Code Online (Sandbox Code Playgroud)
在这个模块(文件)内我知道这是有效的。例如,我可以编写这样的代码并验证是否捕获了我的自定义异常:
try:
raise MYAUTHError('oups')
except MYAUTHError:
print("got it")
Run Code Online (Sandbox Code Playgroud)
但是,当从另一个模块(导入此模块的模块)使用时,我没有成功捕获此自定义异常......
from mypackage import mymodulewithexception
# somewhere in the code, just to test. OK : my class is known.
extest = mymodulewithexception.MYAUTHError('**-test-**')
print(type(extest))
# but this does not catch anything :
except mymodulewithexception.MYAUTHError as ex:
logging.error("Authentication failed", ex)
return
Run Code Online (Sandbox Code Playgroud)
我确信,异常被抛出,因为调用模块是一个 Flask 应用程序,并且调试服务器清楚地向我显示异常被抛出,因为它没有被处理。
在试图理解这一点时,我只是用另一个著名的异常替换了我的自定义异常:ValueError。我更改了调用模块中的代码以捕获此内容:当然,这有效。
我什至尝试捕获异常(真正的通用类):
except mymodulewithexception.MYAUTHError …Run Code Online (Sandbox Code Playgroud) 我发布此邮件是因为找不到适合我的答案/示例,并且以一种我在那里没有看过的方式解决了它。也许有用或可以讨论。
基本上,我的应用程序显示表单集,用户可以在其中创建对象。验证后,将再次显示表单集,用户可以添加新对象。指定日期不相关。
我首先开始使用一些JavaScript来做到这一点,然后使用Django自定义模型(将其归为models.DateField)。
我无法在以后成功完成此操作(我的文章更新链接到该文章)由于有截止日期,我使用简单的ChoiceField将对象存储为Integers来完成此操作,然后使用@property方法从这些对象中建立一个正确的日期用户输入(每天加1)。
这样,我避免深入研究Django蒸汽管道,甚至摆脱了datepicker!
但是感谢@property,我仍然可以在Django模板中保留格式化日期的便利,并进行日期计算等。
models.py:
注意:如果无法在填充字段中构建日期,请使用返回None,否则在尝试在模板中呈现这些@property字段时将出现未绑定的错误。
class MyModel(models.Model):
YEAR_CHOICES = [(y,y) for y in range(1968, datetime.date.today().year+1)]
MONTH_CHOICE = [(m,m) for m in range(1,13)]
start_year = models.IntegerField(choices=YEAR_CHOICES,
default=datetime.datetime.now().year,)
start_month = models.IntegerField(choices=MONTH_CHOICE,
default=datetime.datetime.now().month,)
end_year = models.IntegerField(choices=YEAR_CHOICES,
default=datetime.datetime.now().year,)
end_month = models.IntegerField(choices=MONTH_CHOICE,
default=datetime.datetime.now().month,)
@property
def start_date(self):
if self.start_year and self.start_month:
return datetime.date(self.start_year, self.start_month, 1)
elif self.start_year:
return datetime.date(self.start_year, 12, 31)
else:
return None
@property
def end_date(self):
if self.end_year and self.end_month:
return datetime.date(self.end_year, self.end_month, 1)
elif self.end_year:
return datetime.date(self.end_year, 12, 31) …Run Code Online (Sandbox Code Playgroud) 这是我在做什么: 我有一个表单集组件,它通过 ajax 获取数据来填充表单集。用户可以从表单修改这些数据并提交。
问题:这很好用。但是,我注意到如果我导航到另一个页面然后点击浏览器“返回一页”按钮,表单在那里(模板中的 DOM)但是是空的。v-model 输入字段中不再有数据绑定...
大多数关于此行为的帖子都与我不使用的 vue-router 相关。
我认为它可能需要处理生命周期钩子......实际上,在我的组件上,我在“挂载”时获取数据。但是,如果是这样,哪个生命周期?
我也尝试过“保持活力”但没有成功。
我在我的组件上放了一些详细的日志,试图在浏览器返回时捕获生命周期钩子,但没有打印出来......
beforeCreate: function() {
console.log('---- BEFORE CREATE ----> ')
},
created: function() {
console.log('---- CREATED ----> ')
this.getModelObjects();
},
beforeMount: function() {
console.log('---- BEFORE MOUNT ----> ')
},
mounted: function() {
console.log('---- MOUNTED ---->')
this.getModelObjects();
},
beforeUpdate: function() {
console.log('---- BEFORE update ----> ')
},
updated: function() {
console.log('---- UPDATED ----> ')
},
beforeDestroy: function() {
console.log('---- BEFORE DESTROY ----> ')
},
destroyed: function() {
console.log('---- DESTROYED ----> …Run Code Online (Sandbox Code Playgroud) 好吧,我正在尝试跟踪与 Django Rest Framework 的关系。
这是一个简化的模型:
class Model1(models.Model):
name = models.CharField(max_length=20)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
class Model2(models.Model):
title = models.CharField(max_length=12, null=True, blank=True)
model1 = models.ForeignKey(Model1, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
和序列化器:
class Model1Serializer(serializers.ModelSerializer):
class Meta:
model = Model1
fields = '__all__'
class Model2Serializer(serializers.ModelSerializer):
class Meta:
model = Model2
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
从 Model2 中,我想访问所有者属性,例如电子邮件......
如果没有 DRF 并且在标准模板中,我会这样做:
{{ instanceOfModel2.model1.owner.email }}
Run Code Online (Sandbox Code Playgroud)
这将遵循关系。
您知道如何使用 Django DRF 实现这一目标吗?
我查看了https://www.django-rest-framework.org/api-guide/relations/ 但我想要的是相反的方式......而且我不想通过 REST API 公开 Django 用户模型....