网络配置(二)

网卡别名

将多个IP地址绑定到一个物理网卡,每个IP绑定到独立逻辑网卡,即网络别名。

CentOS6必须关闭NetworkManager

网卡别名必须是静态地址。

命名格式:ensX:Y ,如ens33:0、ens33:1

临时生效

使用命令临时配置,重启失效。

ifconfig实现

原网卡信息

[root@wenzi ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.28.20  netmask 255.255.255.0  broadcast 192.168.28.255
        inet6 fe80::20c:29ff:fe28:cd91  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:28:cd:91  txqueuelen 1000  (Ethernet)

...

新增一个网卡别名ens33:0,IP为192.168.28.50/24

[root@wenzi ~]# ifconfig ens33:0 192.168.28.50/24 up

[root@wenzi ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.28.20  netmask 255.255.255.0  broadcast 192.168.28.255
        inet6 fe80::20c:29ff:fe28:cd91  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:28:cd:91  txqueuelen 1000  (Ethernet)
        RX packets 225  bytes 22586 (22.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 319  bytes 82282 (80.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.28.50  netmask 255.255.255.0  broadcast 192.168.28.255
        ether 00:0c:29:28:cd:91  txqueuelen 1000  (Ethernet)

...

删除一个网卡别名,恢复原样

[root@wenzi ~]# ifconfig ens33:0 192.168.28.50 down

可以发现ens33和ens33:0用的是同一个MAC地址

ip实现

新增网卡别名

[root@wenzi ~]# ip a a 192.168.28.50/24 dev ens33 label ens33:0
[root@wenzi ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:28:cd:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.28.20/24 brd 192.168.28.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.28.50/24 scope global secondary ens33:0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe28:cd91/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

删除网卡别名

[root@wenzi ~]# ip a flush dev ens33 label ens33:0

永久生效

CentOS

为每个设备别名生成独立的接口配置文件,格式:ifcfg-ensX:xxx

[root@wenzi network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1
[root@wenzi network-scripts]# cat ifcfg-ens33:1
DEVICE=ens33:1
IPADDR=192.168.28.50
PREFIX=24
[root@wenzi network-scripts]# nmcli con reload && nmcli con up ens33
[root@wenzi network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:28:cd:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.28.20/24 brd 192.168.28.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.28.50/24 brd 192.168.28.255 scope global secondary noprefixroute ens33:1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe28:cd91/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Ubuntu

network:
    ethernets:
        ens33:
            addresses:
            - 192.168.1.3/24    #原IP
            - 192.168.1.10/24   #新增IP
            nameservers:
                addresses:
                - 223.5.5.5
                - 8.8.8.8
                search: []
            routes:
            -   to: default
                via: 192.168.1.1
    version: 2

多网卡bonding

介绍

bond聚合链路共7种模式。0-6 mode,常用的为0/1/3/6。1/6不需要交换机设置,0/3需需要配置交换机。

  • mod=0

即:(balance-rr) Round-robin policy(轮询)聚合口数据报文按包轮询从物理接口转
发。
负载均衡:所有链路处于负载均衡状态,轮询方式往每条链路发送报文这模式的特点增加了带宽,
同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。

性能问题:一个连接或者会话的数据包如果从不同的接口发出的话,中途再经过不同的链路,在客
户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络
的吞吐量就会下降。Bond0在大压力的网络传输下,性能增长的并不是很理想。
需要交换机进行端口绑定

  • mod=1

即: (active-backup) Active-backup policy(主-备份策略)只有Active状态的物理接口
才转发数据报文。

容错能力:只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态,其他
的slave都处于备份状态,只有在当前激活的slave故障后才有可能会变为激活的(active)。

无负载均衡:此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个
接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N

  • mod=3

即:broadcast(广播策略)这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。

  • mod=6

即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应
答,并把源硬件地址改写为bond中某个物理接口的唯一硬件地址,从而使得不同的对端使用不同
的硬件地址进行通信。

mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会
发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只
占了小部分流量

实验

此实验通过vmware实现,已有网卡ens33,IP:192.168.28.20/24,用于远程连接。现通过vmware编辑配置增加两块网卡,要实现bond,需要新增三个网卡配置文件,其中两个为两块网卡各自的配置文件,第三个实现bond的网卡配置文件。

已有网卡ens33
[root@wenzi ~]# nmcli con show
NAME   UUID                                  TYPE      DEVICE
ens33  039c247d-11cc-4cee-8562-01f309f0332a  ethernet  ens33

增加两块新网卡
[root@wenzi ~]# nmcli con show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  f1dae0f1-4f4a-3846-99ca-47fe07f3c366  ethernet  ens36
Wired connection 2  26a3351a-f2da-3bf1-945d-d1ce635280ea  ethernet  ens37
ens33               039c247d-11cc-4cee-8562-01f309f0332a  ethernet  ens33
[root@wenzi network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:28:cd:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.28.20/24 brd 192.168.28.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe28:cd91/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:28:cd:9b brd ff:ff:ff:ff:ff:ff
    inet6 fe80::dbfd:7bfc:db95:521f/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:28:cd:a5 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::642:a4de:332c:551c/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

bond0网卡配置
[root@wenzi network-scripts]# cat ifcfg-bond0
NAME=bond0
DEVICE=bond0
TYPE=bond
BOOTPROTO=none
IPADDR=192.168.28.50
PREFIX=24
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"

ens36网卡配置
[root@wenzi network-scripts]# cat ifcfg-ens36
NAME=ens36
DEVICE=ens36
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

ens37网卡配置
[root@wenzi network-scripts]# cat ifcfg-ens37
NAME=ens37
DEVICE=ens37
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

重新加载网卡配置
[root@wenzi network-scripts]# nmcli con reload
[root@wenzi network-scripts]# nmcli con show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  f1dae0f1-4f4a-3846-99ca-47fe07f3c366  ethernet  ens36
Wired connection 2  26a3351a-f2da-3bf1-945d-d1ce635280ea  ethernet  ens37
ens33               039c247d-11cc-4cee-8562-01f309f0332a  ethernet  ens33
bond0               ad33d8b0-1f7b-cab9-9447-ba07f855b143  bond      bond0
ens36               418da202-9a8c-b73c-e8a1-397e00f3c6b2  ethernet  --
ens37               4a5516a4-dfa4-24af-b1c4-e843e312e2fd  ethernet  --
启用ens36 ens37连接
[root@wenzi network-scripts]# nmcli con up ens36
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/30)
[root@wenzi network-scripts]# nmcli con up ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/31)
[root@wenzi network-scripts]# nmcli con show
NAME                UUID                                  TYPE      DEVICE
ens33               039c247d-11cc-4cee-8562-01f309f0332a  ethernet  ens33
bond0               ad33d8b0-1f7b-cab9-9447-ba07f855b143  bond      bond0
ens36               418da202-9a8c-b73c-e8a1-397e00f3c6b2  ethernet  ens36
ens37               4a5516a4-dfa4-24af-b1c4-e843e312e2fd  ethernet  ens37
Wired connection 1  f1dae0f1-4f4a-3846-99ca-47fe07f3c366  ethernet  --
Wired connection 2  26a3351a-f2da-3bf1-945d-d1ce635280ea  ethernet  --
[root@wenzi network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: ens36   现在使用的是ens36,ens37是备用
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens36    
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:28:cd:9b
Slave queue ID: 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:28:cd:a5
Slave queue ID: 0



用其它机器测试
[root@centos8 ~]# ping 192.168.28.50
PING 192.168.28.50 (192.168.28.50) 56(84) bytes of data.
64 bytes from 192.168.28.50: icmp_seq=1 ttl=64 time=0.201 ms
64 bytes from 192.168.28.50: icmp_seq=2 ttl=64 time=0.272 ms
64 bytes from 192.168.28.50: icmp_seq=3 ttl=64 time=0.242 ms
...

模拟故障,删除ens36
[root@wenzi network-scripts]# nmcli con show
NAME                UUID                                  TYPE      DEVICE
ens33               039c247d-11cc-4cee-8562-01f309f0332a  ethernet  ens33
bond0               ad33d8b0-1f7b-cab9-9447-ba07f855b143  bond      bond0
ens37               4a5516a4-dfa4-24af-b1c4-e843e312e2fd  ethernet  ens37
ens36               418da202-9a8c-b73c-e8a1-397e00f3c6b2  ethernet  --
Wired connection 2  26a3351a-f2da-3bf1-945d-d1ce635280ea  ethernet  --
[root@wenzi network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: ens37
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:28:cd:a5
Slave queue ID: 0

观察测试端ping信息,出现了短暂延时,但未丢包
64 bytes from 192.168.28.50: icmp_seq=52 ttl=64 time=0.350 ms
64 bytes from 192.168.28.50: icmp_seq=53 ttl=64 time=0.412 ms
64 bytes from 192.168.28.50: icmp_seq=54 ttl=64 time=1.11 ms
64 bytes from 192.168.28.50: icmp_seq=55 ttl=64 time=0.347 ms
64 bytes from 192.168.28.50: icmp_seq=56 ttl=64 time=0.299 ms

网桥

技术上使一台计算机实现交换机的功能。

原理

把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其
他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信

实验

CentOS8用于模拟二层交换机,IP可有可无。

CentOS7的网卡是NAT模式,连接VMNet8。Ubuntu的网卡是仅主机模式,连接VMNet1.

[root@centos8 ~]# yum -y install epel-release && yum -y install bridge-utils.x86_64
已有网卡信息,ens160的地址是用来远程连接的
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:3a:01:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.28.10/24 brd 192.168.28.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::b9d1:63f8:6e81:2a32/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:3a:01:09 brd ff:ff:ff:ff:ff:ff

建立网桥,模拟虚拟交换机br0
[root@centos8 ~]# brctl addbr br0
[root@centos8 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000000000000       no
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 00:0c:29:3a:01:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.28.10/24 brd 192.168.28.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::b9d1:63f8:6e81:2a32/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:3a:01:09 brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:0c:29:3a:01:ff brd ff:ff:ff:ff:ff:ff
将ens160、ens224关联至br0
[root@centos8 ~]# brctl addif br0 ens160
[root@centos8 ~]# brctl addif br0 ens224
[root@centos8 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000c293a0109	no		ens160
							        ens224
激活网桥,由DOWN变为UP
[root@centos8 ~]# ip link set br0 up
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 00:0c:29:3a:01:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.28.10/24 brd 192.168.28.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::b9d1:63f8:6e81:2a32/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 00:0c:29:3a:01:09 brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:3a:01:09 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fe3a:109/64 scope link 
       valid_lft forever preferred_lft forever

CentOS7和Ubuntu互相ping ,当网桥激活时,数据开始互通。

常用命令

traceroute

用于显示数据包从你的主机到目标主机所经过的路由路径。它通过发送小的数据包并等待 ICMP 时间超过(TTL 过期)消息来工作。

如果某一跳出现多个IP,意味着该跳的路由器使用了负载均衡技术

route

查看路由表

route -n

ip route list

新增路由

route add -net <目标网络> netmask <子网掩码> gw <下一跳地址>

route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1

ip route add <目标网络>/<子网掩码> via <下一跳地址>

ip route add 192.168.2.0/24 via 192.168.1.1 

删除路由

route del -net <目标网络> netmask <子网掩码>

route del -net 192.168.2.0 netmask 255.255.255.0

ip route del <目标网络>/<子网掩码> via <下一跳地址>

ip route del 192.168.2.0/24 via 192.168.1.1

arp

用于显示和修改ARP(地址解析协议)缓存表,它将IP地址映射到MAC地址。

查看arp缓存

arp [-a] [-n]

  • -a:显示所有 ARP 记录。
  • -n:以数字形式显示 IP 地址,而不是尝试解析主机名。

[root@VM-16-5-opencloudos ~]#arp -a
_gateway (10.0.16.1) at fe:ee:1e:59:d9:ef [ether] on eth0

  • _gateway (10.0.16.1):这是目标主机的名称和 IP 地址。在这个例子中,目标主机的 IP 地址是 10.0.16.1,并且它被标记为 _gateway,这通常表示它是默认网关。
  • at fe:ee:1e:59:d9:ef:这是与目标 IP 地址对应的 MAC 地址。MAC 地址是一个唯一的硬件地址,用于标识网络接口卡(NIC)。
  • [ether]:这表示这是一个以太网(Ethernet)类型的条目。
  • on eth0:这表示该 ARP 条目是在 eth0 网络接口上发现的。

ip neigh [show]

 [root@VM-16-5-opencloudos ~]#ip neig show
10.0.16.1 dev eth0 lladdr fe:ee:1e:59:d9:ef REACHABLE

  • 10.0.16.1:这是与你的主机在同一局域网内的另一台设备的IP地址。

  • dev eth0:这表示ARP条目关联的网络接口是 eth0。通常,eth0 指的是第一个以太网接口,但这个命名可能会根据系统和配置的不同而有所变化。

  • lladdr fe:ee:1e:59:d9:ef:这是与IP地址 10.0.16.1 相关联的设备的MAC地址。MAC地址是网络设备的物理地址,用于局域网内的设备识别。

  • REACHABLE:这个状态表示ARP条目是有效的,并且对应的设备是可达的。这意味着你的主机最近成功地与这个IP地址进行了通信,并且ARP解析是成功的。

刷新arp缓存

ip -s -s neigh flush [to <IP地址>] [dev <设备名>] [all]

ip -s -s neigh flush all

新增arp条目

arp -s <IP地址> <MAC地址> [pub]

 pub:将该 ARP 记录设置为发布(允许其他主机使用此记录)。

arp -s 192.168.1.100 00:1A:2B:3C:4D:5E

ip neigh add <IP地址> lladdr <MAC地址> dev <设备名> [nud <状态>]

 ip neigh add 10.0.16.1 lladdr fe:ee:1e:59:d9:ef dev eth0

删除arp条目

arp -d <IP地址>

arp -d 10.0.16.1

ip neigh del <IP地址> dev <设备名>

 ip neigh del 10.0.16.1 dev eth0

### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值