Brownie installation - brownie

hp#DESKTOP-QUTE621 MINGW64 \~/demos/nft-demo
$ brownie run scripts/deploy_and_create.py --network rinkeby
INFO: Could not find files for the given pattern(s).
Brownie v1.18.1 - Python development framework for Ethereum
NftDemoProject is the active project.
File "c:\\python\\python3810\\lib\\site-packages\\brownie_cli\__main_\_.py", line 64, in main
importlib.import_module(f"brownie.\_cli.{cmd}").main()
File "c:\\python\\python3810\\lib\\site-packages\\brownie_cli\\run.py", line 45, in main
network.connect(CONFIG.argv\["network"\])
File "c:\\python\\python3810\\lib\\site-packages\\brownie\\network\\main.py", line 40, in connect
web3.connect(host, active.get("timeout", 30))
File "c:\\python\\python3810\\lib\\site-packages\\brownie\\network\\web3.py", line 52, in connect
uri = \_expand_environment_vars(uri)
File "c:\\python\\python3810\\lib\\site-packages\\brownie\\network\\web3.py", line 183, in \_expand_environment_vars
raise ValueError(f"Unable to expand environment variable in host setting: '{uri}'")
ValueError: Unable to expand environment variable in host setting: 'https://rinkeby.infura.io/v3/$WEB3_INFURA_PROJECT_ID'
how can i correct this error so that my program will and connect to network?

You need to add WEB3_INFURA_PROJECT_ID in .env file to connect to network.

Related

"_reconfigure_port" fucntion in serialposix.py throws error while restarting the serial server. Pymodbus module is used

I use Pymodbus module to start the synchronous serial server. I defined the port to be '/dev/ttyUSB0'.
In order to start the server, I make a virtual port using socat. Then I change the owner of the port from root to current user.
Below are the commands I use:
sudo socat pty,raw,echo=0,link=/dev/tUSB0 pty,raw,echo=0,link=/dev/ttyUSB1
sudo chown -c $USER /dev/ttyUSB*
I start and stop the server for the first time. But when I try to restart it, the server throws up the below error:
"File "build/bdist.linux-x86_64/egg/pymodbus/server/sync.py", line 553, in StartSerialServer File "build/bdist.linux-x86_64/egg/pymodbus/server/sync.py", line 446, in
__init__ File "build/bdist.linux-x86_64/egg/pymodbus/server/sync.py", line 462, in
_connect File "build/bdist.linux-x86_64/egg/serial/serialutil.py", line 240, in __init__ File "build/bdist.linux-x86_64/egg/serial/serialposix.py", line 272, in open File "build/bdist.linux-x86_64/egg/serial/serialposix.py", line 438, in _reconfigure_port termios.error: (22, 'Invalid argument')"
PS: I run the program on Ubuntu.

tensorflow IOError: [Errno socket error] [Errno 111] Connection refused

I tried to run a demo of TensorFlow.The MNIST dataset has been download,but there exists one error. Who can tell me what's wrong? Thanks very much! The error detail as follows:
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Traceback (most recent call last):
File "/home/linbinghui/文档/pycode/my_tensorflow_code/test_mnist.py", line 7, in <module>
mnist = input_data.read_data_sets("MNIST_data/", one_hot=False)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py", line 189, in read_data_sets
local_file = maybe_download(TEST_IMAGES, train_dir, SOURCE_URL + TEST_IMAGES)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 81, in maybe_download
urllib.request.urlretrieve(source_url, temp_file_name)
File "/usr/lib/python2.7/urllib.py", line 98, in urlretrieve
return opener.retrieve(url, filename, reporthook, data)
File "/usr/lib/python2.7/urllib.py", line 245, in retrieve
fp = self.open(url, data)
return getattr(self, name)(url)
File "/usr/lib/python2.7/urllib.py", line 350, in open_http
h.endheaders(data)
File "/usr/lib/python2.7/httplib.py", line 1053, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 897, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 859, in send
self.connect()
File "/usr/lib/python2.7/httplib.py", line 836, in connect
self.timeout, self.source_address)
File "/usr/lib/python2.7/socket.py", line 575, in create_connection
raise err
IOError: [Errno socket error] [Errno 111] Connection refused
This code is attempting to download https://storage.googleapis.com/cvdf-datasets/mnist/t10k-images-idx3-ubyte.gz and failing. It failed because of "Connection Refused" which generally indicates that the remote end is not running a server on the port you tried to contact it on.
This URL refers a Google storage service. I was able to successfully download this file. Either you encountered a transient failure of Google's service, or some intermediary between you and Google caused this problem.
Normally "connection refused" is not caused by anything other than the intended remote end being unavailable (there's a computer there but no specific service). However, in the face of modern HTTP and HTTPS proxies, DNS redirection and the like, you could very well have encountered some feature of your business/school/home/government internet interdiction. HTTPS urls can be troubling to the entity hosting your internet service because it represents a private communication channel through which you could download malware or upload secrets. This troubling nature makes it more likely to be intercepted or redirected or disabled entirely.
I recommend that you troubleshoot this problem with wget/curl or similar on your machine. If those work well, consider a small python script with the requests package. Consider also the impact of environment variables on these utilities/libraries. Try repeating this procedure at network endpoints other than the one you're using.
If you find that the results of repeated tests are unstable even in the same network endpoint, perhaps you're facing local load balancers/proxies or some other transient local failure. When in doubt, contact your local network support team.

Accessing a URL in Windows machine from Docker Container

I am a newbie to Docker and this is what I am trying out.
I have a Windows machine on which I have installed Docker using Virtual Box as per this link. I have built a base Ubuntu Image. Now in the Windows Machine I have a Rest Service running that has to be accessed by the docker container. I am accessing it via Python Requests module. What IP should I give to the requests module's get method?
I have tried following
r = requests.get('http://172.17.42.1:8090/app/rest/names');
and
r = requests.get('http://172.17.0.2:8090/app/rest/names');
172.17.0.2 is the IP of Docker Container and 172.17.42.1 is the Bridge IP.
In both cases the error is Connection Refused
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 55, in get
return request('get', url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 383, in reques
t
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 378, in send
raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='172.17.0.2', port=8090): Ma
x retries exceeded with url: /app/rest/names(Caused by <class 'socket.error'>:
[Errno 111] Connection refused)
However I can access a public URL available.
The bridge IP address should work. If it doesn't, it might be because the application on the Windows machine is not listening on all IP addresses, or maybe there is some kind of firewalling.
You can check that the application is listening on the right port (and on all addresses!) with netstat -a -n -o (on the Windows machine), as explained here.
Maybe the Windows machine is only listening on 127.0.0.1 …?

error: [errno 13] Permission denied - What permissions does bottle py require?

I am trying to run bottle py but getting this error:
Traceback (most recent call last):
File "/home/pi/Desktop/gggg.py", line 176, in <module>
run(host='somehost', port=81)
File "/usr/lib/python2.7/dist-packages/bottle.py", line 2426, in run
server.run(app)
File "/usr/lib/python2.7/dist-packages/bottle.py", line 2123, in run
srv = make_server(self.host, self.port, handler, **self.options)
File "/usr/lib/python2.7/wsgiref/simple_server.py", line 144, in make_server
server = server_class((host, port), handler_class)
File "/usr/lib/python2.7/SocketServer.py", line 419, in __init__
self.server_bind()
File "/usr/lib/python2.7/wsgiref/simple_server.py", line 48, in server_bind
HTTPServer.server_bind(self)
File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind
SocketServer.TCPServer.server_bind(self)
File "/usr/lib/python2.7/SocketServer.py", line 430, in server_bind
self.socket.bind(self.server_address)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 13] Permission denied
>>>
I am logged in as "pi". Logging in as root user solves the issue. My question is what permissions does the bottle py and python need to run (which folders and what permissions)?
Edit:
Not sure if it matters but my python files are in Desktop dir. I also set the permissions of the folder/sub-folder to read write for all.
1) If you're planning on running this in production, you shouldn't be using Bottle's built in web server. You should use Apache, nginx, etc. From the Bottle docs:
The built-in default server is based on wsgiref WSGIServer. This
non-threading HTTP server is perfectly fine for development and early
production, but may become a performance bottleneck when server load
increases. There are three ways to eliminate this bottleneck:
Use a different server that is either multi-threaded or asynchronous.
Start multiple server processes and spread the load with a load-balancer.
Do both.
2) [As you know,] You have to be root to bind to port 80; no way around that. Have you considered using sudo?
sudo /home/pi/Desktop/gggg.py
You could configure sudoers to securely allow user "pi" to execute only gggg.py (or whatever webserver you'll end up using for production).
Thanks to #Wooble I realised that permission error had to do with the port and not the file system.
A working workaround is to use port above 1024 which works perfectly and is fine for development. Using port 200 for now:
run(host='someIP', port=2000)
I am still looking for a port 80 permission error solution though.

connecting to remote server using fabric library in django

We are building our application using django web framework.
We are facing this very critical issue in our application. We are trying to connect to remote server using fabric library.
Normally from command line we are able to connect to the server. Also it runs fine in the inbuilt server which comes in django as it runs from the command line.
Command
fab get_string -H user#10.10.10.10>>django.txt 2>&1
We deployed our code in apache and the application gets stuck when it encounters this command in the function. Once in a while we get these logs
"> Using fabfile 'C:\fabfile.py'
Commands to run: generic_task_linux_django
Parallel tasks now using pool size of 1
[user#10.10.10.10] Executing task 'generic_task_linux_django'
2012-08-30 09:36:15.805000
[user#10.10.10.10] run: /bin/bash -l -c "rm -rf /tmp//admin7"
Timed out trying to connect to 10.10.10.10 (attempt 1 of 1), giving up)
Fatal error: Timed out trying to connect to 10.10.10.10 (tried 1 time)
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\tasks.py", line 298, in execute
multiprocessing
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\tasks.py", line 197, in _execute
return task.run(*args, **kwargs)
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\tasks.py", line 112, in run
return self.wrapped(*args, **kwargs)
File "C:\fabfile.py", line 314, in generic_task_linux_django
run("rm -rf "+remote_path + '/' + local_dir_name)
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\network.py", line 457, in host_prompting_wrapper
return func(*args, **kwargs)
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\operations.py", line 905, in run
return _run_command(command, shell, pty, combine_stderr)
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\operations.py", line 815, in _run_command
stdout, stderr, status = _execute(default_channel(), wrapped_command, pty,
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\state.py", line 340, in default_channel
chan = connections[env.host_string].get_transport().open_session()
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\network.py", line 84, in __getitem__
self.connect(key)
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\network.py", line 76, in connect
self[key] = connect(user, host, port)
File "C:\Python27\lib\site-packages\fabric-1.4.1-py2.7.egg\fabric\network.py", line 393, in connect
raise NetworkError(msg, e)
NetworkError: Timed out trying to connect to 10.10.10.10 (tried 1 time)
Aborting."
as it is able to terminate the connection.But in majority of the cases it is getting stuck and we don’t have any logs to show.
Then we decided to run it as a windows service.We used the attached python file which creates service for us(recipe.py).
Again we are facing same issue as we are facing with apache.
You might want to see if your connection if failing due to ssh credentials or similar. You can get more information if you follow my suggestion here and have the ssh/paramiko lib verbosely log.