操作系统:MacOS Monterey 12.3.1,ns 版本:3.36

首先,确保在继续安装之前更新您的操作系统、Xcode 和 Xcode 工具。原因(来自我的经验..):

  1. MacOS 的兼容性问题很多,更新确实有帮助。

  2. 如果您想稍后在解决问题时进行更新。抱歉,您刚刚构建的整个 ns-3 在重大更新后将不再工作。

命令行中的一些帮助:

$ xcode-select --install (install Xcode tools)

我需要在我的 Python 模拟中使用 ns-3,也许稍后会创建一些模块。所以我的目标是启用 python 绑定和 API 扫描(但是在我的安装过程中 ns 启动了 3.36 并且配置状态不再有 API 扫描)。配置应如下所示:

PyViz visualizer              : ON **If you need the visualization**
Python Bindings               : ON

不太友好的教程和没有 GUI 的安装给我带来了很多麻烦,这就是为什么我写这篇日志希望为别人节省一些时间,也许是几天。

安装步骤:

1.在这里下载最新版本的ns-3:Releases。

注意:我已经尝试了使用 Bake 和软件包的下载步骤。使用这个包肯定更容易更快,教程也更兼容它。 2.

$ cd [PATH-to-your-ns3.36]
$ ./build.py --enable-examples --enable-tests **wait for it**
$ cd ns-3.36
$ ./ns3 configure --enable-sudo --enable-examples --enable-tests --enable-python-bindings --build-profile=debug **wait for it**
$ ./ns3 build **wait for it**
$ ./ns3 run hello-simulator
Hello Simulator

如果您看到最后一行,则表示您的 ns-3.36 构建成功。然后尝试:

$ ./ns3 install **I think this helps, but I don't know why, tutorial didn't mention it**
$ ./ns3 run --no-build examples/tutorial/first.py -v
At time +2s client sent 1024 bytes to 10.1.1.2 port 9
At time +2.00369s server received 1024 bytes from 10.1.1.1 port 49153
At time +2.00369s server sent 1024 bytes to 10.1.1.1 port 49153
At time +2.00737s client received 1024 bytes from 10.1.1.2 port 9
Finished executing the following commands:
cd .; export PATH=$PATH:/Users/Dora/Downloads/ns-allinone-3.36/ns-3.36/build/lib PYTHONPATH=/Users/Dora/Downloads/ns-allinone-3.36/ns-3.36/build/bindings/python LD_LIBRARY_PATH=/Users/Dora/Downloads/ns-allinone-3.36/ns-3.36/build/lib ; python3 /Users/Dora/Downloads/ns-allinone-3.36/ns-3.36/examples/tutorial/first.py

如果您看到这种结果,则意味着您的 Python 绑定也已成功自动生成。

如果没有,问题可能是(就我遇到的而言):

  1. Python 版本与您的构建不匹配:我使用的是 3.8.10,它是 Python 3.8 的最新版本,附带安装程序。教程中提到Python3.6-3.8可以很好的支持API扫描。

  2. 还要确保 Python 的所有依赖项都在同一路径下。或者使用一些指令更改 Python 依赖项的路径。 “对于 Python 绑定,重要的先决条件是 clang-dev、cmake、cxxfilt、llvm-dev、python3-dev 和 python3-setuptools。”参考

一些错误和修复:

Fatal Python error: _PyInterpreterState_Get(): no current thread state 
**this means runtime is using the wrong python, not the one build used**
$ whereis python3
python3: /usr/bin/python3 /Library/Frameworks/Python.framework/Versions/3.8/share/man/man1/python3.1
**Build uses the first path by default**
$ echo $PATH
/anaconda3/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/MacGPG2/bin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/Dora/Library/Python/3.8/bin:/Applications/Wireshark.app/Contents/MacOS
$ export PATH=/usr/bin:/anaconda3/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/MacGPG2/bin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/Dora/Library/Python/3.8/bin:/Applications/Wireshark.app/Contents/MacOS
**put path found above "/usr/bin" before all others**

现在我想将 ns 包导入我的 PyCharm。

1.生成的Python绑定在这里找到:./build/bindings/python,我这里有两个文件夹:ns和visualizer。

ls ./build/bindings/python
ns 可视化器
  1. 将 python 绑定文件夹复制到项目根目录或您在上面找到的 Python 路径(在 site-packages 内)。

  2. 打开 Pycharm(或您的 IDE),转到 Pycharm->Preferences->Project: pythonProject->Python Interpreter,将您的 Python 解释器更改为您在上面找到的那个(是的,我这样做了...) .

4.我将examples/tutorial/first.py文件复制到我的IDE中。它仍然显示与导入相关的错误,但我可以很好地运行它。 截图

试试这个来检查 PyViz 函数:

./ns3 run --no-build src/flow-monitor/examples/wifi-olsr-flowmon.py --vis -v

肯定还有其他解决方案,这只是我如何做到的,而不需要在网上找到太多的说明/修复。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐