Python的一些工具包和Ubuntu使用中遇到的一些问题

写在前面:最近在做一些东西,平台是Ubuntu16.04,用Putty登陆远程的主机,WinSCP挂载代码,这可以说是我第一次接触Linux操作系统,所以其中遇到了很多奇奇怪怪的问题,也看了很多帖子,但有些问题老是会碰到,与其每次都去查不如自己写个总结,反正现在在上网课,闲着也是闲着,此帖不定期更新,直到东西做完为止……

VMware Tools的安装

网上的方法很多,我自己实验有用的方法是
1、点击虚拟机->安装vmtools
2、把一个tar.gz拖到一个你知道的地方,比如/Downloads
3、sudo su进入root身份
4、cd /home/python/Downloads 目录就是之前的目录
5、tar -zxvf VMwareTools-10.0.0-2977863.tar.gz 解压的文件名记得看清楚
6、cd vmware-tools-distrib进入这个文件夹 ./vmware-install.pl运行pl文件
7、之后会弹出一大堆内容,记住yes/no的全部选yes,其他全部回车default
== 到中后段一堆路径后会弹出一个yes/no,需要注意 ==

root自动登录

引用自:https://blog.csdn.net/hxh5801050/article/details/77801050
慎用,有时一劳永逸有时贼jb坑,我这里是Ubuntu16.04,其他版本的可能会不同
1、给root用户设置密码sudo passwd root
2、编辑一个文件sudo gedit /etc/lightdm/lightdm.conf
内容是

[Seat:*]
autologin-guest=false
autologin-user=root
autologin-user-timeout=0
greeter-session=lightdm-gtk-greeter

3、编辑另一个文件sudo gedit /root/.profile
内容是

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

tty -s && mesg n || true

4、sudo reboot重启

终端分割

因为要同时登陆多台主机,所以用终端分割方便一些
只有一步sudo apt-get install terminator

快捷键们
Ctrl+Shift+E 垂直分割窗口
Ctrl+Shift+O 水平分割窗口
F11 全屏
Ctrl+Shift+C 复制
Ctrl+Shift+V 粘贴
Ctrl+Shift+N 或者 Ctrl+Tab 在分割的各窗口之间切换,或者alt加方向键
Ctrl+Shift+X 将分割的某一个窗口放大至全屏使用
Ctrl+Shift+Z 从放大至全屏的某一窗口回到多窗格界面
Ctrl+Shift+W 关闭当前窗口

私钥放置的问题

引用自:https://blog.csdn.net/qq_37449342/article/details/94726146
因为要用Putty远程登陆,所以需要将私钥放入你的虚拟机,我放在/root目录下,其他目录都提示too open
但是发起登陆请求时可能会出现以下问题

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey).

解决方法只有一步chmod -R 700 /root

Putty远程登陆

ssh -i /root/id_dsa -X [email protected] 

注意你的id_dsa放的位置,后面的x.x.x.x是ip

内网的登陆

登陆远端主机后如果还需登陆VLAN里的其他主机,方法也差不多

ssh -i /root/id_dsa [email protected]

同样x.x.x.x是内网ip地址

error:[Errno 98] Address already in use

引用自:https://blog.csdn.net/SSSuperFang/article/details/80039524?depth_1-utm_source=distribute.pc_relevant.nonetask&utm_source=distribute.pc_relevant.none-task
如果碰到了这个错误,可能是在远端程序运行时意外掉线或者没有Ctrl+C退出。
解决方法是:
1、lsof -i:(port)port是端口号,你的代码里应该有提到
2、sudo kill PID杀掉进程,PID在上一行命令输完出现的界面能看到

Matplotlib中的问题

引用自:https://blog.csdn.net/zhangpeterx/article/details/83627705

1、_tkinter.TclError: no display name and no $DISPLAY environment variable

解决方法:https://blog.csdn.net/zhangpeterx/article/details/83627705
出现此问题可能是因为远端Linux没有GUI?或者命令行不能画图?
Anyway
命令行不能画图,但是可以把画的图存下来在用WinSCP下载回本地来看
解决方法
头部引入

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

== 顺序不能乱!!!!==
然后plt.savefig('/.../result.png')’…'是远端保存的路径,文件名可以随便取,我取的result.png

Networkx中碰到的问题

G = nx.Graph()
G = G.to_directed()

具体的图根据你自己的情况,这不是重点
如果你要给图中的边赋权值,或者就是要给边的一个属性赋值,我最开始是这样做的, 以下代码为错误示范!!!!!

for sourcee in range(0, 20): #此段为错误示范
	for destinationn in range(0, 20):
		if sourcee != destinationn and nx.has_path(G, g.L_IP[sourcee], g.L_IP[destinationn]):
			G.add_edge(g.L_IP[sourcee], g.L_IP[destinationn], {'weight': 1.0})
			G.add_edge(g.L_IP[destinationn], g.L_IP[sourcee], {'weight': 1.0})
		elif sourcee == destinationn and nx.has_path(G, g.L_IP[sourcee], g.L_IP[destinationn]):
			G.add_edge(g.L_IP[sourcee], g.L_IP[destinationn], {'weight': 0.0})

本意是把除自环外的每条边的权值赋为1.0,自环的权值设为0.0,经过这一段代码成功把自己之前的图连成了全连通图……这段代码风格怎么说呢……什么叫C语言,zhei他妈就叫C语言,毕竟最早学的是C语言,用Python写C类型的代码的习惯还需要编程量来改正
正确方法如下

for edge in G.edges():
	G.edges[edge]['weight'] = 1.0
for source in range(0, 20):
	for destination in range(0, 20):
		if source == destination:
			G.add_edges_from([(g.L_IP[source], g.L_IP[destination], {'weight': 0.0})])

把除自环外的每条边的权值都赋为1.0就用了两行……

其他

这语句挺好用的input('Press Enter to continue')能让程序停下来,看看之前输出的内容,如果没有千里眼,这个还是蛮好用的,而且有种打游戏的快感哈哈哈


3月31日更新

Connection refused的原因之一

本地密钥和远端密钥可能不对应,用Puttygen修改密钥格式即可
修改方法:PuTTYgen->Conversions->Export OpenSSH key(force new file format)
不同平台可能认得密钥格式不同,灵活转变就好

from scipy.misc import logsumexp报错

替换from scipy.misc import logsumexp为from scipy.special import logsumexp

locale.Error: unsupported locale setting

原因:缺少对应的语言包
解决方案:sudo apt install language-pack-zh-hans


2021年1月23日更新

Debian9.9凸优化包cvxpy安装失败

如果直接使用pip3 install cvxpy可能会出现安装失败的情况,网上许多教程都是在Windows系统下的解决方案,还有的说是要提前安装一系列的其他工具包,在我这里全部不起作用,我这里尝试有用的方法如下

报错信息

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-mQKCCo/cvxpy/

解决方法:

pip3 install --upgrade pip
pip3 install cvxpy

或许其他工具包可以的安装出现类似问题可以举一反三。


20220120更新

遇到了一个很奇怪的问题,Pycharm-FIle-Settings-Interpreter里添加Packages时加号是灰色的,同时发现windows命令行里有一行很奇怪的字

ANOMALY: use of REX.w is meaningless (default operand size is 64)

怀疑这两个问题是否有关联

解决方法

Win+R,输入regedit打开注册表
增加项,路径为:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\TEC\Ocular.3\agent\config 下 新建 [字符串值] hookapi_disins,数值数据: 1

问题解决

你可能感兴趣的:(linux,ubuntu,python,debian)