小编use*_*363的帖子

VSCode 在选择解释器选项中不显示诗歌虚拟环境

我需要帮助。无论我尝试什么,VSCode 都不会找到诗歌 virtualenv 解释器。

使用官方文档中$ curl解释的标准方法安装了诗歌 Python 包管理器。

开始了一个项目$ poetry new finance-essentials_37-64,安装了诗歌环境$ poetry install

所以现在我可以通过以下方式看到我确实有一个虚拟环境:

Jaepil@Jaepil-PC MINGW64 /e/VSCodeProjects/finance_essentials_37-64 $ poetry env list 
>> finance-essentials-37-64-SCQrHB_N-py3.7 (Activated)
Run Code Online (Sandbox Code Playgroud)

这个 virtualenv 安装在:C:\Users\Jaepil\AppData\Local\pypoetry\Cache\virtualenvs,它有finance-essentials-37-64-SCQrHB_N-py3.7目录。

但是,VSCode 无法在其“选择解释器”命令中找到此 virtualenv。我只看到一堆 Anaconda 和 Pipenv 环境,但没有看到我刚刚制作的诗歌环境的解释器。

我也按照这里的建议添加"python.venvPath": "~/.cache/pypoetry/virtualenvs",到我的,但无济于事。还是不行。settings.json

我也尝试了绝对路径,通过添加"python.venvPath": "C:\\Users\\Jaepil\\AppData\\Local\\pypoetry\\Cache\\virtualenvs",到相同的设置,但它也不起作用。

VSCode 设置参考声明它具有python.poetryPath默认值,但它似乎也不起作用。"poetry"在这种情况下,我应该更改默认值吗?

python.poetryPath

“诗歌”

指定 Poetry 依赖管理器可执行文件的位置(如果已安装)。默认值“poetry”假定可执行文件在当前路径中。Python 扩展使用此设置在 Poetry 可用且工作区文件夹中有一个 Poetry.lock 文件时安装包。

我使用的是 64 位 Windows 10 专业版并在系统上安装了 …

python visual-studio-code python-poetry

26
推荐指数
4
解决办法
1万
查看次数

我应该单独提交 .lock 文件更改吗?我应该为提交消息写什么?

我正在为我的 Python 包管理器使用诗歌,但我相信这适用于任何编程实践。

我一直在这样做,但不知道我在做什么,或者我应该怎么做。

当您使用包管理器并安装新包时,通常会.lock更改文件以保持构建的确定性。

通常,我会提交这些更改,例如:

$ git add poetry.lock pyproject.toml 
$ git commit -m "Install packages: beautifulsoup4"
Run Code Online (Sandbox Code Playgroud)

即,我每次安装/删除软件包时都会提交一次。我这样做是因为我觉得这是我应该做的,但我有 0 个线索,如果这实际上是处理这个问题的正确方法。

我做得很好吗?或者是否有任何其他特定的约定和规则我应该遵守以使其尽可能接近最佳实践?

python git python-poetry

10
推荐指数
3
解决办法
2629
查看次数

使用 Python 包管理器 Poetry 时,我应该将哪些文件/目录添加到 .gitignore?

我正在使用一个名为Poetry 的全新 Python 包管理器。

它在创建新项目(环境)时创建了几个文件/目录,但我不确定我应该添加哪个以.gitignore获得最佳实践。

假设我通过这样做创建了一个新的诗歌项目:

$ poetry new foo_project
$ cd foo_project
$ poetry add numpy
$ ls
Run Code Online (Sandbox Code Playgroud)

有:

tests (directory)
foo_project (also a directory)
pyproject.toml (a file that specifies installed packages)
poetry.lock (a lock file of installed packages)
README.rst (I don't know why README is created but it just shows up.)
Run Code Online (Sandbox Code Playgroud)

我通常添加tests/, foo_project/,poetry.lock并且README.rst因为它们似乎依赖于创建项目的机器。另外,我似乎只能用 来重现环境,pyproject.toml所以这是我忽略所有其他文件/目录的另一个原因。

然而,这只是我的预感,不幸的是,我找不到任何官方指南,我真的应该.gitignore在官方文档中添加什么。

它只是让我感到烦恼,我不确定我在做什么。我应该将哪些添加到我的.gitignore?

python gitignore python-poetry

9
推荐指数
1
解决办法
2372
查看次数

如何正确更改用诗歌构建的包名称?

我使用poetry包管理器构建了一个包,但我后悔命名它,因为它听起来有点幼稚。

此外,由于poetry的默认行为是强制将项目名称更改为小写(SuperPackage--> superpackage),因此很难在包的主目录内部/外部导入包。

这是一个目录结构示例:

SuperPackage/
    - superpackage/
    - mysubpackage/
        - __init__.py
        - utils.py
        - foo.py
    - tests/
        - __init__.py
        - test_superpackage.py
    - poetry.lock
    - pyproject.toml
    - README.md
    - README.rst
    - .gitignore
Run Code Online (Sandbox Code Playgroud)

由于这种结构,

SuperPackage/
    - superpackage/
    - mysubpackage/
        - __init__.py
        - utils.py
        - foo.py
    - tests/
        - __init__.py
        - test_superpackage.py
    - poetry.lock
    - pyproject.toml
    - README.md
    - README.rst
    - .gitignore
Run Code Online (Sandbox Code Playgroud)

现在,我想SuperPackage改为nicepackage.

我该如何实现这一目标?我无法用谷歌搜索它,也许是因为它非常不常见或者太明显了。我应该更改文件"name"中的字段吗?pyproject.toml

但是,我不确定是否可以(并且建议)"name"直接更改字段。

[tool.poetry]
name …
Run Code Online (Sandbox Code Playgroud)

python package python-poetry pyproject.toml

9
推荐指数
1
解决办法
1万
查看次数

VSCode 上的 Pipenv:为什么 (pipenv) 未显示在终端上?

我正在 VSCode Bash 终端上设置 pipenv 虚拟环境,但没有显示 (pipenv),这使它非常混乱。

当我使用Pycharm并让它配置pipenv环境时,它会自动显示(pipenv)在项目路径之后,因此很容易判断我是否在pipenv上。

在我转移到 VSCode 后,我创建了一个项目目录并在其中启动了一个 pipenv 环境,通过$ pipenv shell它初始化的 pipenv 东西很好,但(pipenv)没有显示在 shell 上,而是显示在终端的右上角,如下所示:https://imgur。 com/a/h3Ji8ZO

终端的显示方式似乎由 scripts/activate文件但问题似乎与 pipenv 和 VSCode 都有些相关,所以我不确定如何正确解决这个问题。

这是与我的设置相关的一些代码。

Jill@Jill-PC MINGW64 /e/VSCodeProjects/likelion (master)
$ pip -V
pip 19.2.1 from c:\users\jill\.virtualenvs\likelion-wdstza1r\lib\site-packages\pip (python 3.6)

Jill@Jill-PC MINGW64 /e/VSCodeProjects/likelion (master)
$ python --version 
Python 3.6.4 :: Anaconda, Inc.

Jill@Jill-PC MINGW64 /e/VSCodeProjects/likelion (master)
$ pipenv --version
pipenv, version 2018.11.26
Run Code Online (Sandbox Code Playgroud)

bash terminal visual-studio-code pipenv

7
推荐指数
1
解决办法
7472
查看次数

如何使用 youtube-dl 的 --add-header 选项?

我正在尝试使用 youtube-dl(一种带有命令行界面的流行视频下载器)添加自定义标题。

我在 Windows 10 上使用 PowerShell(或 CMD)。

官方文档如下所示,但我似乎无法正确使用它。

--add-header FIELD:VALUE
指定自定义 HTTP 标头及其值,以冒号“:”分隔。您可以多次使用此选项

我正在尝试为请求添加多个标头,例如:

"Accept-Encoding": "identity;q=1, *;q=0",
"范围": "字节=6488064-",
"Referer": "https://avideosite.net/video/0123456",
"用户代理": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36"

但是当我尝试类似的东西时

start youtube-dl --add-header "Accept-Encoding":"identity;q=1, *;q=0" --add-header "Range":"bytes=6488064-" --add-header "Referer":"https://avideosite.net/video/0123456" --add-header "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36" "http://11.22.333.444:8280/abcdefg=.mp4?st=97WbFiADB5Hla7Y-fZx58g&e=1560574126"
Run Code Online (Sandbox Code Playgroud)

它不起作用并引发如下错误:

启动过程:找不到接受参数的位置参数
'接受编码'。
在行:1 字符:1
+ 启动 youtube-dl --add-header "Accept-Encoding":"identity;q=1, *;q=0" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) …

python powershell command-line cmd youtube-dl

6
推荐指数
1
解决办法
1万
查看次数

如何使 Poetry 站点包可在 VSCode 上搜索?

VSCode 默认支持许多虚拟环境,并且这些环境的文件是可搜索的。然而,我正在使用Poetry,它的库似乎没有出现在搜索中。

.vscode/settings.json我通过更改项目目录来手动设置 Python 解释器。(因为命令面板Python: Select interpreter也不起作用。

{
    "python.pythonPath": "~\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\finance-essentials-37-64-58e2e1Bc-py3.7\\Scripts"
}
Run Code Online (Sandbox Code Playgroud)

我想让文件在~\AppData\Local\pypoetry\Cache\virtualenvs\finance-essentials-37-64-58e2e1Bc-py3.7\Lib\site-packages我的命令 pelette 和代码上下文中可搜索,以便我可以轻松查找库源。

我该怎么做呢?

python visual-studio-code python-poetry

3
推荐指数
1
解决办法
3866
查看次数

Pandas 为过滤后的数据帧/系列分配值。为什么不一致?

TL;DR:使用.loc[:, 'foo']而不是.foo


pandas 什么时候给视图赋值,什么时候给副本赋值?

AFAIK,pandas 要么返回视图,要么返回副本,具体取决于您使用的方法。

如果为视图分配值,则可以更改原始数据框,但如果为副本分配值,则无法更改原始数据框。

然而,下面的行为让我感到困惑。为什么为视图分配值适用于数据框而不适用于系列?

dd = pd.DataFrame([
    {'a': 1, 'b': 2},
    {'a': 2, 'b': 4},
    {'a': 4, 'b': 3},
])

dd[dd.a == 1] = pd.DataFrame([{'a': 100, 'b': 200}]) # Assigning value works. 

dd
>>  a   b
0   100 200
1   2   4
2   4   3
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,第一行的值已更改。

但是,如下所示,为系列分配值不起作用,即使设置相同(除了我称为系列之外)。

dd = pd.DataFrame([
    {'a': 1, 'b': 2},
    {'a': 2, 'b': 4},
    {'a': 4, 'b': 3},
])

dd[dd.a == 1].a = 1000 # Assigning value doesn't work. …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
2476
查看次数