当我跑步时,pip freeze
我看到(以及其他预期的包裹)pkg-resources==0.0.0
.我见过几个帖子提的这个包(包括这一次),但没有说明它是什么,或者为什么它被包含在输出pip freeze
.我想知道的主要原因是出于好奇,而且,在某些情况下,当尝试requirements.txt
使用pip freeze
包含该pkg-resources==0.0.0
行生成的文件安装软件包时,似乎会破坏某些内容(例如,当Travis CI尝试安装依赖项pip
并发现此情况时线).
是什么pkg-resources
,是否可以删除此行requirements.txt
?
我发现这条线似乎只存在于pip freeze
我所在的输出中virtualenv
.我仍然不确定它是什么或它做了什么,但我会进一步调查,知道它可能与之相关virtualenv
.
我正在处理遗留的Dockerfile.这是我正在处理的非常简化的版本:
FROM ubuntu:14.04
RUN apt-get -y update && apt-get -y install \
python-pip \
python-numpy # ...and many other packages
RUN pip install -U pip
RUN pip install -r /tmp/requirements1.txt # includes e.g., numpy==1.13.0
RUN pip install -r /tmp/requirements2.txt
RUN pip install -r /tmp/requirements3.txt
Run Code Online (Sandbox Code Playgroud)
首先,使用安装几个软件包apt
,然后使用安装几个软件包pip
.pip
版本10已经发布,部分版本是这个新限制:
删除了对卸载使用distutils安装的项目的支持.distutils安装的项目不包括指示哪些文件属于该安装的元数据,因此实际卸载它们是不可能的,而不是仅删除表示已安装的元数据,同时保留所有实际文件.
这导致我的设置中出现以下问题.例如,首先apt
安装python-numpy
.后来pip
尝试安装新版本的numpy
从如/tmp/requirements1.txt
,并试图卸载旧版本,但由于新的限制,它无法删除此版本:
Installing collected packages: numpy
Found existing installation: numpy 1.8.2
Cannot uninstall 'numpy'. It …
Run Code Online (Sandbox Code Playgroud) 由于某些我无法弄清楚的原因,从以下代码:
>>> from pytz import timezone
>>> timezone('America/Chicago')
Run Code Online (Sandbox Code Playgroud)
我明白了:
<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD>
Run Code Online (Sandbox Code Playgroud)
我想,我应该得到:
<DstTzInfo 'America/Chicago' LMT-1 day, 18:00:00 STD>
Run Code Online (Sandbox Code Playgroud)
...因为我认为我的时区距离UTC只有6小时9分钟.
我已经查看了源代码,pytz
但我承认我还没有完全弄清楚出了什么问题.
我已将其他值传递给timezone()
函数,它返回的值似乎是正确的.但由于某些原因,与我的时区相关的信息不正确.
最后,我旁边的立方体中的同事确认该函数在他的机器上返回正确的时区信息.
有谁知道为什么我的时区('America/Chicago'
)会在9分钟后关闭?我运行版本2015.7
的pytz
安装使用pip
.谢谢!
我对pep-8的大多数事情都不熟悉,但在编写代码时我个人更喜欢某些事情(而不是工作,我会坚持现有代码库的风格或缺乏它).
我个人倾向于遵循的一件事是pep-8关于空白行的建议:
使用两个空行环绕顶级函数和类定义.
类中的方法定义由单个空行包围.
但是,当我违反此规定时,我无法让Pylint警告我.我没有看到任何似乎与我相关的禁用相关内容.pylintrc
,而且我无法弄清楚Pylint中是否可以实现这一点,如果可以的话,如何启用它.
基于这个答案,看起来pep-8的某些方面Pylint没有(或当时没有)覆盖,但我无法确定空白行是否属于这种情况.
是否有可能让Pylint警告空行(太多/不够)而不编写自定义扩展?
我正在尝试构建一个数据驱动的表单,输入来自另一个组件,如下所示:
<form [formGroup]="signupForm" (ngSubmit)="onSubmit()">
<app-form-group [name]="name"></app-form-group>
<app-form-group [name]="email"></app-form-group>
<app-form-group [name]="other"></app-form-group>
</form>
Run Code Online (Sandbox Code Playgroud)
该app-form-group
组件将如下所示:
<div class="form-group">
<label class="col-md-2 control-label">{{Name}}</label>
<div class="col-md-9">
<input class="form-control" [name]="name" [formControlName]="formCtrlName">
</div>
Run Code Online (Sandbox Code Playgroud)
问题是formControlName
需要一个formGroup
指令,因此我得到这个错误:
Error : Error in ./FormGroupComponent class FormGroupComponent - inline template:3:58 caused by: formControlName must be used with a parent formGroup directive.You'll want to add a formGroup
directive and pass it an existing FormGroup instance (you can create one in your class).
Run Code Online (Sandbox Code Playgroud)
有什么方法可以解决这个问题吗?
我有一个使用Nx CLI生成的应用程序。我可以使用 Jest 命令运行此应用程序的测试nx test myApp
。这很好用。不过,我想使用 Jest 的“观看模式”。在运行我的测试时,不知道如何实现这一点。Nx 的文档简单地说:
要为您的应用程序运行单元测试:
nx test myapp
我无法找到此命令的任何更详细的文档,或如何向其添加任何其他选项/标志。无论如何可以使用手表模式吗nx test
?
我按照本教程创建了以下自定义管理命令.
from django.core.management.base import BaseCommand, CommandError
from django.contrib.auth.models import User
from topspots.models import Notification
class Command(BaseCommand):
help = 'Sends message to all users'
def add_arguments(self, parser):
parser.add_argument('message', nargs='?')
def handle(self, *args, **options):
message = options['message']
users = User.objects.all()
for user in users:
Notification.objects.create(message=message, recipient=user)
self.stdout.write(
self.style.SUCCESS(
'Message:\n\n%s\n\nsent to %d users' % (message, len(users))
)
)
Run Code Online (Sandbox Code Playgroud)
它完全按照我的意愿工作,但我想添加一个确认步骤,以便在for user in users:
循环之前询问您是否确实要将消息X发送给N个用户,如果选择"否",则命令将中止.
我认为这可以很容易地完成,因为它发生在一些内置的管理命令中,但它似乎没有涵盖在教程中,甚至在一些搜索和查看内置管理命令的源之后,我无法独自解决这个问题.
在尝试为另一个用户回答问题时,我遇到了一些激起我好奇心的事情:
import os
os.chdir('..')
Run Code Online (Sandbox Code Playgroud)
将尽可能Python是有关更改工作目录,所以如果我在/home/username/
,我跑os.chdir('..')
,任何后续的代码将工作,好像我在/home/
。例如,如果我然后这样做:
import glob
files = glob.glob('*.py')
Run Code Online (Sandbox Code Playgroud)
files
将是一个.py
文件列表,/home/
而不是/home/username/
. 但是,一旦脚本退出,我就会回到/home/username/
,或者我最初运行脚本的任何目录。
我发现 shell 脚本也会发生同样的事情。如果我有以下脚本:
#!/bin/bash
cd /tmp
touch foo.txt
Run Code Online (Sandbox Code Playgroud)
运行该脚本/home/username/
将创建一个文件foo.txt
中/tmp/
,但是当剧本完成后,我仍然会在/home/username/
不/tmp/
。
我很好奇,如果有,为什么工作目录是不是在这些情况下,改变“永久”的一些根本原因,如果有是一种方法来永久地改变它,例如,运行一个脚本~$ python myscript.py
,并有终端是运行脚本当脚本完成执行时, from 最终位于不同的目录中。
我正在尝试转译一个使用 ES6 语法和 TypeScript 的项目。我有一个这样的目录结构:
??? .babelrc
??? src
??? index.ts
??? pitching
??? pitching.test.ts
??? pitching.ts
Run Code Online (Sandbox Code Playgroud)
我想将所有内容编译src
并输出到dist/
. 我尝试了以下命令的许多变体(在 中的"build"
脚本中指定package.json
):
babel ./src -d ./dist
Run Code Online (Sandbox Code Playgroud)
但我总是得到以下输出:
$ babel ./src -d ./dist
Successfully compiled 0 files with Babel (13ms).
Done in 0.32s
Run Code Online (Sandbox Code Playgroud)
结果是dist/
我的项目根目录中有一个空目录。我尝试编译为单个文件而不是目录,这确实创建了一个编译文件,但是代码中引用的所有模块路径都被搞乱了,因为它们是相对于src
目录的。我之所以提到这一点,是因为对我来说这表明我的 babel 设置是正确的,尽管我也可能错了。
我的问题是,为什么我的文件没有被转译,或者我该如何排除故障?该命令没有给我任何有用的输出,甚至当我加入{"debug": true}
到我的预设.babelrc
。
作为参考,这里是我使用的 babel 包和版本:
"devDependencies": {
"@babel/cli": "^7.10.3",
"@babel/core": "^7.10.3",
"@babel/preset-env": "^7.10.3",
"@babel/preset-typescript": "^7.10.1",
"@types/jest": "^26.0.3",
"jest": "^26.1.0"
}
Run Code Online (Sandbox Code Playgroud)
这是我的 …
我在我的网站上的一些页面上有一个评论部分,我用一个{% for ... %}
循环构建(还有另一个用于评论回复的嵌套循环。该部分被黑客攻击在一起,我仍在学习 Web 开发和 Django,所以请原谅任何令人沮丧的草率或怪异. 我现在不关心效率,只关心效率,现在还不太合适。
对于每条评论,我都有一个 Bootstrap 下拉按钮,可以显示选项Edit
和Delete
. Edit
将打开一个模式来编辑评论。模态是用{% include %}
标签呈现的。下面我包含了未修改的部分代码,而不是试图简化我的示例并冒着遗漏一些重要内容的风险:
<div class="panel panel-default">
{% for comment in spot.ordered_comments %}
<div class="panel-heading row">
<div class="col-sm-10">
<strong>{{ comment.poster.username }}</strong>
<em style="margin-left: 2em">{{ comment.created|date:'M d \'y \a\t H:i' }}</em>
</div>
<div class="btn-group col-sm-2" role="group">
{% if comment.poster == user %}
<form id="delete-comment-form" class="form"
method="post" action="{% url 'delete_comment' spot.id comment.id %}">
{% csrf_token %}
</form>
{% include 'topspots/editmodal.html' with edit_type='comment' %} …
Run Code Online (Sandbox Code Playgroud)