小编Lig*_*tCC的帖子

代码 '_T = TypeVar('_T')' 在 *.pyi 文件中是什么意思?

我是 Python 注释的新手(类型提示)。我注意到文件中的许多类定义pyi都继承了Generic[_T], 和_T = TypeVar('_T').

我很困惑,_T这里是什么意思?

from typing import Generic, TypeVar

_T = TypeVar('_T')

class Base(Generic[_T]): pass
Run Code Online (Sandbox Code Playgroud)

python annotations type-hinting pyi

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

如何使用 `venv` 更新 Python 虚拟环境以使用较新版本的 Python?

我最近安装了 Python 3.8.0 和 Python 3.7.4。

我有一些虚拟环境(使用python -m venv <directory>基于 v3.7.4创建的环境。如何更新它们以使用 v3.8.0?

我是否需要创建一个新的虚拟环境并重新安装依赖项、脚本等?


注意:有一些现有的问答(例如这个)处理旧的virtualenv包/工具。我特别询问新的内置venv模块,它是自 v3.3 以来 Python 的标准内置模块,并且与virtualenv.

python python-3.x python-venv

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

自定义 std::fstream、std::filebuf 的上溢和下溢函数不会为每个字符调用

我正在尝试制作一个自定义的 std::fstream,它会在读取时对数据进行编码/解码。

template <class T>
class _filebuf : public std::filebuf {
public:
    using transform_type = T;

    int_type underflow() override {
        auto c = std::filebuf::underflow();
        return c < 0 ? c : transform.decode(c);
    }

    int_type overflow(int_type c) override {
        return c < 0 ? c : std::filebuf::overflow(transform.encode(c));
    }

private:
    transform_type transform;
};

template <class T>
class _fstream : public std::iostream {
public:
    using buffer_type = _filebuf<T>;
    
    explicit _fstream(const std::string& path, std::ios::openmode openmode)
        : std::iostream(0)
    {
        this->init(&buffer);
        buffer.open(path, openmode);
    }

private:
    buffer_type …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance fstream iostream c++17

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

Pyinstaller错误 - "找不到setuptools发布"

尝试使用Pyinstaller为我的python项目构建可执行二进制文件.

环境细节:

Python - 2.7.6,pip - 6.1.1,setuptools - 21.2.1

我能够成功构建项目.

pyinstaller heatstackapp.py
......
......
83093 INFO: checking COLLECT
83093 INFO: Building COLLECT because out00-COLLECT.toc is non existent
83094 INFO: Building COLLECT out00-COLLECT.toc
jayaprakash@cloudenablers:/opt/core/heatstack/heatstack$
Run Code Online (Sandbox Code Playgroud)

而当我执行二进制文件时,它会抛出错误消息.

jayaprakash@cloudenablers:/opt/core/heatstack/heatstack$     ./dist/heatstackapp/heatstackapp 
......
......
      File "pbr/packaging.py", line 31, in <module>
      File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
        exec(bytecode, module.__dict__)
      File "setuptools/command/develop.py", line 11, in <module>
      File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
        exec(bytecode, module.__dict__)
      File "setuptools/command/easy_install.py", line 53, in <module>
      File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
        exec(bytecode, module.__dict__) …
Run Code Online (Sandbox Code Playgroud)

python pyinstaller

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

Python Setuptools 和 PBR - 如何使用 git 标签作为版本创建包发布?

我如何实际创建使用 git repo 标签进行版本控制的 python 包的发布/发行版,使用setuptoolspbr

关于所需的基本设置和配置有很多信息:

但是关于如何实际创建发行版的简单信息在哪里?

即我正在寻找任何命令找到带有版本信息的 git 标记并将其拉入配置信息中,因此可以分发具有该新版本信息的源,并且可以使用类似的方法从脚本中发现版本信息在这个答案中描述。


额外细节

我正在开发一个项目,该项目将仅通过 git repo 分发给其他开发人员,而不是通过PyPi。该项目将使用 以可执行文件的形式发布给用户pyinstaller,因此此包分发仅用于几个关键目的:

  1. 为其他开发人员安装/设置包,以便可以干净地重新创建依赖项/环境。
  2. 管理版本——当前的计划是用于pbr从 Git 存储库标签生成版本,因此这些标签可以成为我们版本控制的真实来源
  3. 使用pbr其他自动生成从SVN家常的物品,如作者,manifest.in文件,发行票据等。

由于setuptools文档专注于使用PyPi和设置完全可分发和可重用的包pip,并且pbr文档只真正告诉您如何修改setuptools配置以使用pbr,因此我找不到有关如何运行分发/发布过程的信息。

我确定它存在于文档中的某个地方,但经过几次错误的启动后,我在这里问。我看到的每一个地方都暗示每个人要么知道如何做到这一点,要么作为过程的一部分神奇地发生。

我只是错过了显而易见的事情吗?


更新:

根据 sinoroc 的回答,看来我需要研究开发模式安装。即任何开发项目的人都会从git克隆,然后使用setuptools开发安装模式安装。

这不是原始问题的直接一部分,而是暗示的,我相信处于相同情况的人会感兴趣(我无法轻易找到信息)。

在他关于更新某些元数据的回答中提供了更多信息,并通过setuptools文档链接在“开发模式”下工作

python versioning git setuptools python-pbr

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

如何从 VS Code 测试运行器界面运行不同的 Pytest 参数或标记?

我无法让 VS Code PyTest 代码运行器按照我想要的方式工作。看来 pytest 选项可能是一种全有或全无的情况。

有没有办法在 VS Code 界面中轻松运行不同的 PyTest 选项集?

例如:

  1. 默认情况下,运行所有未标记的测试@pytest.mark.slow

    • 这可以通过参数来完成-m "not slow"
    • 但是,如果我将其放入 pytest.ini 文件中,那么它永远不会运行任何标记为缓慢的测试,即使我在界面中选择该特定测试并尝试运行它。结果输出是collected 1 item... 1 item deselected.
  2. 有时会启用覆盖范围,有时则不启用覆盖范围。

我能看到做到这一点的唯一方法是从命令行运行 PyTest,这会失去自动发现、从内联接口运行/调试单个测试等的好处。

我缺少什么?

注意:当前使用 VS Code 1.45.1、Python 3.7.6 和 PyTest 5.3.5

python pytest visual-studio-code

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

如何从Qt :: namesase(Qt5,Python3.x)导入?

对于我的应用程序,我需要设置一些小部件参数,例如alignment(Qt::AlignBottom)和其他。但是我无法导入它们(其他PyQt5素材导入没有任何问题)。

使用此代码

from PyQt5 import Qt

progressBar = QProgressBar(splash)
progressBar.setAlignment(Qt.AlignBottom)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
  File "run_app.py", line 50, in <module>
    runSemApp(sys.argv)
  File "run_app.py", line 32, in runSemApp
    progressBar.setAlignment(Qt.AlignBottom)
AttributeError: 'module' object has no attribute 'AlignBottom'
Run Code Online (Sandbox Code Playgroud)

并使用此作品:

from PyQt5.Qt import *

progressBar = QProgressBar(splash)
progressBar.setAlignment(Qt.AlignBottom)
Run Code Online (Sandbox Code Playgroud)

尽管我有一个可行的解决方案,但我只想导入Qt.AlignBottom而不能*。另外,为什么不Qt.AlignBottom一起工作from PyQt5 import Qt

python qt python-3.x pyqt5

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

Git 会克隆、获取或推送孤立提交吗?

当父提交图中没有包含它们的标签或分支时,就会创建孤立提交。例如,如果你犯了一个分支foo,添加提交ab,然后删除分支(即删除引用foo从提交b),那么这两个ab,除非你救了他们的哈希值将是不可到达的。

x-x-x-x   <- master
     \
      a-b  <- foo (reference then deleted or reset to somewhere on master)
Run Code Online (Sandbox Code Playgroud)

孤立提交的基本 Git 行为是最终垃圾收集并删除它们(我听说默认至少是 30 天)。

我的问题是这样的:

将以往的Git从一个回购移动孤儿提交到另一个使用git clonegit fetchgit push命令?

或者 Git 是否有效地忽略了任何不直接调用孤儿哈希(例如checkoutcherry-pick)的操作的这些提交?

git git-push git-fetch git-clone orphan

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

是否可以使用 SSH.NET 从单个登录会话中执行多个 SSH 命令?

我正在将 C# 与 SSH.NET 一起使用,并且已经能够使客户端 SSH 连接正常工作以通过 SSH 执行命令。我可以毫无问题地连接到管理程序 VM 上的 Linux 安装,回读StdOutStdErr等。

但是,每个命令就像一个全新的会话 - 它总是从 开始/home/user,即使您使用最后一个命令从另一个目录结束也是如此。您可以使用分号将多个命令串在一起:

pwd; cd ..; pwd
Run Code Online (Sandbox Code Playgroud)
/home/user
/home
Run Code Online (Sandbox Code Playgroud)

但是如果我执行:

pwd
Run Code Online (Sandbox Code Playgroud)
/home/user
Run Code Online (Sandbox Code Playgroud)

我回到了那个用户的主目录。

我没有断开和关闭命令之间的会话。以下是连续几个命令的一些示例代码,使用路径更改来说明问题:

public void MultiCommandTest()
{
    string output1, output2;

    var host = Config.SshHostName;
    var port = Config.SshHostPort;
    var user = Config.SshUsername;
    var pass = Config.SshPassword;
    var auth = new PasswordAuthenticationMethod(user, pass);
    var info = new ConnectionInfo(host,port,user,auth);

    using (var ssh = new SshClient(info))
    {
        ssh.Connect();
        var cmd1 …
Run Code Online (Sandbox Code Playgroud)

.net c# ssh session ssh.net

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

.vscode中的调试问题

我最近在VSCODE中进行调试遇到了一个大问题。我试图通过搜索站点并重新安装一些扩展程序来修复自身。

而不是在调试控制台中显示我的结果,而是将以下输出写入我的终端

cd /Users/AVFL/Documents/Programming ; env "PYTHONIOENCODING=UTF-8"
PYTHONUNBUFFERED=1" /usr/local/bin/python3
/Users/AVFL/.vscode/extensions/ms-python.python-2018.3.1/pythonFiles/PythonTools/visualstudio_py_launcher.py
/Users/AVFL/Documents/Programming 54323 34806ad9-833a-4524-8cd6-18ca4aa74f14 RedirectOutput,RedirectOutput
/Users/AVFL/Documents/Programming/Python/Projects/Entrepeneuring/employeeDatabase.py
Run Code Online (Sandbox Code Playgroud)

我的脚本的结果显示在下面。结果也显示在调试控制台中,但我希望它们只显示在调试控制台中。

我正在使用Python调试:当前文件。我尝试将控制台none更改为外部和集成终端功能,但是我需要将其设置为默认值。

使用Python:Current File时,该如何做才能使其在调试控制台中进行调试?


我看过一篇关于这个问题的文章,但他们将控制台更改为无,并在Python中进行调试:集成终端而不是当前文件

当我在文件夹中创建virtualenv时发生了问题。

python python-3.x visual-studio-code python-3.6 vscode-debugger

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