小编np8*_*np8的帖子

pyproject.toml 文件有什么用?

背景

我正要尝试从 GitHub 下载的 Python 包,发现它没有 . setup.py,所以我无法安装它

pip install -e <folder>
Run Code Online (Sandbox Code Playgroud)

相反,该包有一个pyproject.toml文件,该文件似乎与setup.py通常的条目非常相似。

我发现了什么

谷歌搜索引导我进入PEP-518,它setup.py在基本原理部分给出了一些批评。但是,它没有明确说明setup.py应该避免使用 ,或者pyproject.toml完全取代setup.py.

问题

pyproject.toml用来代替的东西setup.py吗?或者一个包应该同时带有 apyproject.toml和 a setup.py
如何安装pyproject.toml处于可编辑状态的项目?

python packaging pip pyproject.toml

55
推荐指数
4
解决办法
2万
查看次数

Python自然平滑样条线

我试图找到一个python软件包,该软件包将提供一个选项,以使自然平滑样条线与用户可选的平滑因子相匹配。有没有实现的方法?如果没有,您将如何使用可用的工具自己实施?

  • 所谓自然样条曲线,是指应该满足以下条件:拟合函数在端点处的二阶导数为零(线性)。

  • 通过平滑样条曲线,我的意思是样条曲线不应被“插值”(通过所有数据点)。我想自己决定正确的平滑系数lambda(请参见Wikipedia页面以平滑样条线)。

我发现了什么

  • scipy.interpolate.CubicSpline [ 链接 ]:执行自然(三次)样条曲线拟合。进行插值,并且无法平滑数据。

  • scipy.interpolate.UnivariateSpline [ 链接 ]:样条曲线是否与用户可选的平滑因子拟合。但是,无法选择使花键自然化。

python regression spline

11
推荐指数
4
解决办法
6999
查看次数

如何使用带有选项卡完成功能的python调试器运行pytest?

背景

我已经使用Plain调试了python脚本大约2年了from IPython import embed; embed(),并且运行良好。我只是将命令放在要检查的行上,并且在运行脚本时,我将拥有完整的IPython Shell,具有检查变量,定义函数等的能力。最重要的是,IPython Shell附带了变量名制表符。

现在,from IPython import embed; embed()我不再像总是用定义“暂停行” ,而是让我的python脚本在运行测试时遇到异常时暂停执行。

您如何pytest以这种方式运行,

  1. 引发异常时,它将启动python调试器
  2. 该调试器是否具有变量名的制表符补全

设定

  • Windows 10
  • Python 3.6

简单的失败测试

# test_somemodule.py
def test_me(some_variable):
    x = 1 + some_variable
    return x


test_me('I am a string')
Run Code Online (Sandbox Code Playgroud)

(不,您不必像这样为pytest编写测试,但是出于示例目的,这很好。)

无效的解决方案

1. pytest --pdb(未pdbpp安装)

pdb遇到错误时,这将打开基本外壳程序。但是它没有制表符补全。

-> x = 1 + some_variable
(Pdb) so[<tab_here_produces_tab>]
Run Code Online (Sandbox Code Playgroud)

2. pytest --pdb pdbpp安装)

pdbpp遇到错误时,这将打开基本外壳程序。但是没有制表符补全。

-> x = 1 …
Run Code Online (Sandbox Code Playgroud)

python debugging pytest pdb ipdb

10
推荐指数
1
解决办法
662
查看次数

ImportError:无法导入名称“动画”(matplotlib + python 3.8.5)

为什么用 python 3.8.5 导入的 matplotlib 不起作用?

我正在运行 anaconda 版本 3,它是 64 位。我得到的错误是:

Matplotlib 安装版本为 3.3.2:

使用缓存的 matplotlib-3.3.2-cp38-cp38-win_amd64.whl (8.5 MB)

Python 3.8.5 (default, Sep  3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Ana
conda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\mat
plotlib\__init__.py", line 139, in <module>
    from . import cbook, rcsetup
  File "C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\mat
plotlib\rcsetup.py", line 26, in <module>
    from …
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-3.x

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

PySimpleGUI 按下按钮时调用函数

import PySimpleGUI as sg\nimport os\n\n    layout = [[sg.Text('Velg mappe som skal tas backup av og hvor du vil plassere backupen')],\n              [sg.Text('Source folder', size=(15, 1)), sg.InputText(), sg.FolderBrowse()],\n              [sg.Text('Backup destination ', size=(15, 1)), sg.InputText(), sg.FolderBrowse()],\n              [sg.Text('Made by Henrik og Thomas\xe2\x84\xa2')],\n              [sg.Submit(), sg.Cancel()]]\n    window = sg.Window('Backup Runner v2.1')\n\n    event, values = window.Layout(layout).Read()\n
Run Code Online (Sandbox Code Playgroud)\n

当我按下提交按钮时如何调用函数?或任何其他按钮?

\n

python pysimplegui

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

如何在单独的文件中定义回调?(情节破折号)

背景

Dash Web 应用程序有一个 dash 应用程序实例,通常命名为app,并像这样启动:

app = dash.Dash(__name__)
Run Code Online (Sandbox Code Playgroud)

然后,使用callback装饰器将回调添加到应用程序中:

@app.callback(...)
def my_function(...):
    # do stuff.
Run Code Online (Sandbox Code Playgroud)

在您找到的大多数教程中,回调是使用app.py. 这当然只是 MWE 的做事方式。在实际应用程序中,将代码分离到模块和包将大大提高可读性和可维护性,但天真地将回调和布局分离只会导致循环导入。

app.py单页应用程序中分离回调和布局的正确方法是什么?

移动电源

这是问题的最小(非)工作示例

文件结构

.
??? my_dash_app
?   ??? app.py
?   ??? views
?       ??? first_view.py
?       ??? __init__.py
??? setup.py
Run Code Online (Sandbox Code Playgroud)

设置文件

import setuptools

setuptools.setup(
    name='dash-minimal-realworld',
    version='1.0.0',
    install_requires=['dash>=1.12.0'],
    packages=setuptools.find_packages(),
)
Run Code Online (Sandbox Code Playgroud)

应用程序

import dash

from my_dash_app.views.first_view import make_layout

app = dash.Dash(__name__)
app.layout = make_layout()


if __name__ == '__main__':
    app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)

first_view.py

@app.callback(...)
def …
Run Code Online (Sandbox Code Playgroud)

python plotly-dash

8
推荐指数
5
解决办法
4175
查看次数

在 Python 中将纬度、经度和海拔高度转换为本地 ENU 坐标

如何使用 Python 将大地测量(纬度、经度、高度)坐标转换为本地切线平面 ENU(东、北、上)坐标?

pyproj 包似乎没有正确的功能......

coordinate-systems coordinate-transformation python-2.7 pyproj

5
推荐指数
3
解决办法
7257
查看次数

如何更改 IPython shell 文本文字颜色 (Windows Powershell)

问题定义

我在 Windows Powershell 上使用 IPython。出于某种原因,字符串文字的颜色是难以辨认的深红色:

PowerShell中的Ipython

为了进行比较,以下是它在 VSCode 上的外观,使用了 powershell “shell”和 Ipython:

VSCode 中的 powershell 中的 Ipython

IPython 当然使用一些命令来告诉 shell 要使用的颜色。如何将字符串文字颜色修改为浅红色?我希望这是计算机范围(或至少是用户范围)设置。

powershell ipython

4
推荐指数
2
解决办法
975
查看次数

当我安装了多个Python版本时,如何为VSCode虚拟环境指定Python版本?

我安装了 64 位和 32 位 Python。我试图在 VSCode 中使用 32 位 Python.exe 文件创建一个虚拟环境。我在 Python: Select Interpreter 中为我的工作区选择了该版本(即 C:\Program Files (x86)\Python37-32\python.exe)。

然后,我更改了工作区中的 launch.json 文件以包含“python”解释器:

{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "python": "c:/Program Files (x86)/Python37-32/python.exe"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但是,当我创建虚拟环境时:

py -3 -m venv 32_bit_env
Run Code Online (Sandbox Code Playgroud)

它使用的 python 解释器是来自 C:\Program Files\Python37\python.exe 的 64 位版本,如 pyvenv.cfg 中所示:

home = C:\Program Files\Python37
Run Code Online (Sandbox Code Playgroud)

是否有其他位置可以更改工作区中 python.exe 文件的目录?谢谢你!

python windows python-venv visual-studio-code

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

cx_Freeze和seaborn - ImportError:没有名为'scipy.spatial.ckdtree'的模块

问题

出于某种原因导入seaborn包时,生成可执行文件(.exe)会产生以下ImportError.如何解决这个问题?

Traceback (most recent call last):
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\cx_Fr
eeze\initscripts\__startup__.py", line 12, in <module>
    __import__(name + "__init__")
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\cx_Fr
eeze\initscripts\Console.py", line 21, in <module>
    scriptModule = __import__(moduleName)
  File "GUI.py", line 22, in <module>
    import seaborn as sns
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\seabo
rn\__init__.py", line 9, in <module>
    from .linearmodels import *
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\seabo
rn\linearmodels.py", line 8, in <module>
    from scipy.spatial import distance
  File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\scipy
\spatial\__init__.py", line 93, in <module>
    from .ckdtree import *
ImportError: No module named 'scipy.spatial.ckdtree'
Run Code Online (Sandbox Code Playgroud)

附加信息

建立

  • Windows …

python windows scipy cx-freeze seaborn

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

使用 pd.Categorical 对多索引 pd.Series 进行排序?

为什么使用分类索引时使用pd.Series.sort_index的排序似乎不起作用?如何使用字母/数字以外的其他排序顺序对多索引 pd.Series 的索引进行排序?

移动电源

设置代码

import pandas as pd 
import numpy as np

d = {
    'Card': [
        'Visa', 'Visa', 'Master Card', 'Master Card', 'Visa', 'Master Card',
        'Visa', 'Visa', 'Master Card', 'Visa', 'Master Card', 'Visa', 'Visa',
        'Master Card', 'Master Card', 'Visa', 'Master Card', 'Visa', 'Visa',
        'Master Card', 'Visa', 'Master Card', 'Master Card', 'Master Card',
        'Master Card', 'Master Card', 'Master Card', 'Visa', 'Visa'
    ],
    'Year': [
        'Three', 'Three', 'Seven', 'Three', 'Three', 'Seven', 'Seven', 'Seven',
        'Three', 'Seven', 'Three', 'Three', …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
2
解决办法
291
查看次数