Jupyter 无法启动虚拟环境的问题“ImportError: DLL load failed while importing error”

阅读(784)

问题描述
使用 Jupyter Notebook 或 Jupyter Lab 时,常常需要使用虚拟环境的内核。然而实际启动时可能会出现如下的报错信息,导致无法正常使用内核:

Traceback (most recent call last):
File “E:\Software\anaconda3\envs\test\lib\runpy.py”, line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File “E:\Software\anaconda3\envs\test\lib\runpy.py”, line 87, in _run_code
exec(code, run_globals)
File “E:\Software\anaconda3\envs\test\lib\site-packages\ipykernel_launcher.py”, line 15, in
from ipykernel import kernelapp as app
File “E:\Software\anaconda3\envs\test\lib\site-packages\ipykernel__init__.py”, line 2, in
from .connect import *
File “E:\Software\anaconda3\envs\test\lib\site-packages\ipykernel\connect.py”, line 18, in
import jupyter_client
File “E:\Software\anaconda3\envs\test\lib\site-packages\jupyter_client__init__.py”, line 4, in
from .connect import *
File “E:\Software\anaconda3\envs\test\lib\site-packages\jupyter_client\connect.py”, line 21, in
import zmq
File “E:\Software\anaconda3\envs\test\lib\site-packages\zmq__init__.py”, line 55, in
from zmq import backend
File “E:\Software\anaconda3\envs\test\lib\site-packages\zmq\backend__init__.py”, line 40, in
reraise(*exc_info)
File “E:\Software\anaconda3\envs\test\lib\site-packages\zmq\utils\sixcerpt.py”, line 34, in reraise
raise value
File “E:\Software\anaconda3\envs\test\lib\site-packages\zmq\backend__init__.py”, line 27, in
_ns = select_backend(first)
File “E:\Software\anaconda3\envs\test\lib\site-packages\zmq\backend\select.py”, line 28, in select_backend
mod = import(name, fromlist=public_api)
File “E:\Software\anaconda3\envs\test\lib\site-packages\zmq\backend\cython__init__.py”, line 6, in
from . import (constants, error, message, context,
ImportError: DLL load failed while importing error: 找不到指定的模块。

问题分析
在报错信息中,关键的语句为

File “E:\Software\anaconda3\envs\test\lib\site-packages\zmq\backend\cython__init__.py”, line 6, in
from . import (constants, error, message, context,
ImportError: DLL load failed while importing error: 找不到指定的模块。

可以看出,在调用 zmq 包时出现 ImportError,从而导致内核启动失败。使用 conda list 查看包版本,其中 pyzmq 的版本号为 20.0.0,可以尝试安装其他版本的 pyzmq 以解决该问题。

解决方案
进入虚拟环境
conda activate test

安装旧版本 pyzmq(默认通道下 pyzmq 的最新版本为 20.0.0,因此只能安装旧版本)
conda install pyzmq=19

如果python版本是3.9,需要安装22版本。
conda install pyzmq=22

或者,如果想要使用最新的 pyzmq 包,也可以从 conda-forge 通道安装
conda install pyzmq -c conda-forge

回到 base 环境,启动 Jupyter
conda deactivate
jupyter lab

无报错信息,虚拟环境内核顺利启动

原文:https://blog.csdn.net/Draymond_666/article/details/114040739

Debian11解决libidn动态库报错

阅读(482)

Debian11 调用动态库报错

libidn.so.11 => not found

erro提示:error while loading shared libraries: libidn.so.11: cannot open shared object file: No such file…

解决办法:

apt search libidn
apt install libidn11-dev

Linux环境 tinyproxy安装配置及使用教程

阅读(720)

安装

# centos
sudo yum install tinyproxy
# ubuntu
sudo apt install tinyproxy

配置

vim /etc/tinyproxy/tinyproxy.conf

需要修改的是:

# 注释掉这一行
# Allow 127.0.0.1
# 修改端口号
Port 8787

# 只有TinyProxy1.10.0版本及以上,才支持认证
#BasicAuth 用户名1 密码1
#BasicAuth 用户名2 密码2
BasicAuth user 123456

Allow 是允许访问的主机IP,不写就是允许所有主机访问
Port 是代理访问端口号

启动/停止/查看状态/重启命令

systemctl start tinyproxy.service
systemctl stop tinyproxy.service
systemctl status tinyproxy.service
systemctl restart tinyproxy.service

或者 service tinyproxy {start|stop|status|restart|condrestart|try-restart|reload|force-reload}

service tinyproxy start

查看日志

cat /var/log/tinyproxy/tinyproxy.log

杀掉tinyproxy进程

ps -ef | grep tinyproxy | grep -v grep| awk '{print "kill -9 "$2}' | sh
参考:

https://blog.51cto.com/u_15278282/2931913
https://blog.csdn.net/qq_44216791/article/details/120886610

Debian添加开机启动项

阅读(744)

有的时候,我们需要开机自动运行一些脚本 。今天介绍一个简单的方法,实现将自己需要的程序添加到开机启动项中,并使其在系统启动后自动执行。

首先,进入 /etc/init.d 目录。
然后,我们使用 ls 命令,会发现里面有一些文件。这些文件就是在开机启动时自动运行的程序。我们现在来开始添加一个自定义的开机启动项mystart.sh :

你可以使用你自己喜欢的文本编辑工具进行编辑工作。此文以 vim 为例。

然后,在继续之前,先看一下开机启动项文件的一个模板:

#!/bin/sh

### BEGIN INIT INFO
# Provides: [程序名称,唯一]
# Required-Start: networkremote_fs local_fs
# Required-Stop:network remote_fslocal_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: [启动项的简短说明]
# Description: [启动项的完整说明]
### END INIT INFO

[需要执行的命令]

exit 0

在这个模板中,Provides 是唯一的,也就是在所有的开机启动项中,Provides不能有任何同名冲突。

Short-Description 和 Description 随心情写。

需要执行的命令,按照正常的Bash Shell书写方式书写即可。

友情提示:需要后台静默运行的程序,请使用 nohup [需要执行的命令] >/dev/null 2>&1 &方式来启动!

最后的 exit 0 请不要删除!这个是返回正常退出信号的一个传值!

那么,我们设想我们需要创建一个名为mystart.sh的开机启动项,并要求其在开机时自动同步时间(假设ntpdate已经安装’apt install ntpdate’),根据上面的模板,我们需要修改成这个样子:

#!/bin/sh

### BEGIN INIT INFO
# Provides: mystart
# Required-Start: networkremote_fs local_fs
# Required-Stop:network remote_fslocal_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: mystart
# Description: executed when the system starts
### END INIT INFO

/usr/sbin/ntpdate time.nist.gov|logger -t NTP
/usr/sbin/hwclock -w

exit 0

之后将文件保存,关闭编辑器。

接下来,我们将刚才编辑好的mystart.sh文件加上可执行的属性(如果不加属性,启动脚本将无法运行):

chmod +x mystart.sh
然后,将这个启动脚本加入开机启动项中:

update-rc.d mystart.sh defaults
然后重新启动系统,或者命令行执行 /etc/init.d/mystart.sh ,执行启动脚本。

如何删除我们刚才创建的开机启动项呢?

答案很简单,只需要一条命令:

update-rc.d -f mystart.sh remove

Debian系统降低 IPv6的优先级或 禁用 IPv6

阅读(622)

1. 降低 IPv6的优先级,优先使用IPv4

默认的安装中,IPV4 和 IPV6 并存,并且 IPV6 却优先于 IPV4。如果不需要彻底关闭 IPV6,可以设置让 IPV4 优先于 IPV6。配置方式如下:

echo "precedence ::ffff:0:0/96 100" >>/etc/gai.conf

当然也可以直接修改 /etc/gai.conf 文件,找到下面这一行

#precedence ::ffff:0:0/96 100

把前面的#去掉即可。

2. 设置 GRUB 启动参数禁用 IPv6

编辑 /etc/default/grub,找到

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

修改为:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet"

随后执行命令 update-grub 更新 grub 启动参数,重启系统即可。

ufw的配置和使用方法

阅读(515)

前言

UFW 是一个 Arch Linux、De­bian 或 Ubuntu 中管理防火墙规则的前端,可大大简化防火墙的配置过程。

安装 UFW

如还没有安装,可以使用 apt 命令来安装

apt update && aptinstall ufw

在使用前,你应该检查下 UFW 是否已经在运行。

ufw status

如果你发现状态是 inactive ,意思是没有被激活或不起作用。

启用 / 禁用

ufw enable  #启用
ufw disable  #禁用

使用与配置

列出当前 UFW 规则

ufw status verbose

添加规则

允许入站(allow)

默认情况,没有允许就是拒绝(入站),使用 ufw allow <端口> 来添加允许访问的端口或协议。

ufw allow ssh  #添加22端口
ufw allow http  #添加80端口
ufw allow https  #添加443端口
ufw allow 2333/tcp   #添加2333端口,仅TCP协议
ufw allow 6666/udp   #添加6666端口,仅UDP协议
ufw allow 8888:9999  #添加8888到9999之间的端口

拒绝访问(deny)

使用 ufw deny <端口> 来添加拒绝入站的端和协议,与添加允许的类似。

删除规则

先使用 ufw status 查看规则,再使用 ufw delete [规则] <端口> 来删除规则。

ufw delete allow 2333/tcp

如果你有很多条规则,使用 numbered 参数,可以在每条规则上加个序号数字。

然后使用 ufw delete <序号> 来删除规则。

ufw status numbered  #列出规则,并加上序号

Status: active

To Action From

[ 1] 20,21,22,80,888,8888/tcp ALLOW IN Anywhere
[ 2] 39000:40000/tcp ALLOW IN Anywhere
[ 3] 8896/tcp ALLOW IN Anywhere
[ 4] 8896/udp ALLOW IN Anywhere
[ 5] 443/tcp ALLOW IN Anywhere
[ 6] 20,21,22,80,888,8888/tcp (v6) ALLOW IN Anywhere (v6)
[ 7] 39000:40000/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 8896/tcp (v6) ALLOW IN Anywhere (v6)
[ 9] 8896/udp (v6) ALLOW IN Anywhere (v6)
[10] 443/tcp (v6) ALLOW IN Anywhere (v6)

ufw delete 4  #删除上面的第4条规则

Deleting:
allow 8896/udp
Proceed with operation (y|n)? y #最后会询问你是否进行操作
以上都是一些简单常用的一些命令,想要深入了解,可以输入 man ufw 查看 ufw 用户手册。

禁 Ping

打开 UFW 配置文件

vim /etc/ufw/before.rules

修改配置
允许 ping

-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

禁止 ping

-A ufw-before-input -p icmp --icmp-type echo-request -j DROP

让配置生效

ufw reload

原文连接:https://ednovas.xyz/2021/08/15/ufw/

nginx反向代理大文件下载1.01G连接中断

阅读(605)

主要原因是主机与被代理机设置了临时文件缓冲区。客户区下载时,缓冲区已被塞满,主机与被代理机保持静默时间长,造成了连接中断。解决办法,可以不设置最大临时文件大小或者取消代理缓存机制。

       location / {
       #...
       uwsgi_max_temp_file_size 0;
       uwsgi_buffering off;
       # proxy_max_temp_file_size 0;
       # proxy_buffering off;
       #...
    }