# Issues with the CSV package

**URL:** <https://discourse.julialang.org/t/issues-with-the-csv-package/110412>\
**Category:** New to Julia\
**Created:** [February 19, 2024, 4:01pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412 "2024-02-19T16:01:00Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 19, 2024, 4:01pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/1 "2024-02-19T16:01:00Z")

</div>

Hello !  
I just began an internship and was given the following code made by a person that left the company :

```julia
using Pkg
Pkg.activate(".")
using CSV
using MAT
using ProgressBars
using HDF5
using LightXML
using Mmap
using Distributions
using Interpolations
using DataFrames
using TFRecord

# A small julia script to extract very efficiently
# spikes times and align them with a nnBehavior matrix.
# The results is stored in a CSV folder.

# The script should be launched with the following arguments, in order:
# the path to the xml file
# the path to the dat file
# the path to the nnBehavior.mat file
# the path at which the output csv file will be written
# the path to the dataset where we will write the awake spike
# the path to the dataset where we will write the sleeping spike
# e.g:
# xmlPath = "~/dataTest/Mouse-M1199-1304/continuous.xml"
# datPath = "~/dataTest/Mouse-M1199-1304/continuous.dat"
# behavePath = "~/dataTest/Mouse-M1199-1304/nnBehavior.mat"
# fileName = "~/dataTest/Mouse-M1199-1304/test_spikeJulia.csv"
#
xmlPath = ARGS[2]
datPath = ARGS[3]
behavePath = ARGS[4]
fileName = ARGS[5]
thresholdsFileName = replace(fileName,"spikeData_fromJulia"=>"thresholds_Julia")
datasetName = ARGS[6]
datasetNameSleep = ARGS[7]
BUFFERSIZE = parse(Int64,ARGS[8])
WINDOWSIZE = parse(Float32,ARGS[9])
WINDOWSTRIDE = parse(Float32,ARGS[10])

print(xmlPath)

using CodecZlib
using BufferedStreams
#we modify the TFrecord so it Effectively appends
function TFRecord.write(s::AbstractString, x;compression=nothing, bufsize=1024*1024)
    io = BufferedOutputStream(open(s, "a"), bufsize)
    if compression == :gzip
        io = GzipCompressorStream(io)
    elseif compression == :zlib
        io = ZlibCompressorStream(io)
    else
        isnothing(compression) || throw(ArgumentError("unsupported compression method: $compression"))
    end
    TFRecord.write(io, x)
    close(io)
end

function isInEpochs(time,epochs)
	# for an epochs array in the format [[start,end,start,end,....]]
	# verify if time is in any of these epochs:
	if size(epochs,1)>0
		return map(t->sum((t.>=epochs[1:2:end-1,1]).*(t.<epochs[2:2:end,1]))>0,time)
	else
		return map(t->false,time)
	end
end

function extract_spike_with_buffer(xmlPath,datPath,behavePath,fileName,datasetName,datasetNameSleep,BUFFERSIZE,WINDOWSIZE)
	#Read the xml file:
	xdoc = parse_file(xmlPath)
	xroot = root(xdoc)
	acquiSystem = xroot["acquisitionSystem"]
	nbits = parse(Float16,content(acquiSystem[1]["nBits"][1]))
	Nchannel = parse(Float16,content(acquiSystem[1]["nChannels"][1]))
	samplingRate = parse(Float16,content(acquiSystem[1]["samplingRate"][1]))
	spd = xroot["spikeDetection"]
	groupList = spd[1]["channelGroups"][1]["group"]
	pint =s-> parse(Int64,s)
	#We need to add 1 to all channels because they are indexed starting at 0!!
	list_channels = map(s->pint.(map(c->content(c),s["channels"][1]["channel"])).+1,groupList)

    println("Number of bits: ",nbits)
    println("Number of channel: ",Nchannel)
    println("Sampling rate: ",samplingRate)
    println("List of channels for each group: " ,list_channels)
	println("Window size: " ,string(WINDOWSIZE*1000))

	file = open(datPath)
	isreadable(file)
	#memory-map the file:
	mmapFile = Mmap.mmap(file,Matrix{Int16},(Int(Nchannel),Int(filesize(file)/(2.0*Nchannel))))
	mmapFile = transpose(mmapFile)
	channel_focus = vcat(list_channels...)

	# first we will associate each spike to a measurement of environmental feature
	# and the time at which it was measured
	behaveMat = h5open(behavePath)
	position_time = behaveMat["behavior"]["position_time"][:,:]
	speed = behaveMat["behavior"]["speed"][:,:]
	positions = behaveMat["behavior"]["positions"][:,:]
	sleepPeriods =[]
	try
		# sleepPeriods = vcat(behaveMat["behavior"]["sleepPeriods"][:]...)
		# sleepPeriods = reshape(sleepPeriods,(size(sleepPeriods,1),1))
		sleepPeriods = behaveMat["behavior"]["sleepPeriods"][:,:]
		sleepPeriods = reshape(sleepPeriods,(size(sleepPeriods,2),1))
		println("Detected sleep periods in nnBehavior.mat")
		println(sleepPeriods)
	catch
		println("No sleep periods detected in nnBehavior.mat, saving all spikes in the position_time limit in the same dataset")
		sleepPeriods =[]
	end
	maxpos = maximum(positions)

	nodes = (position_time[:,1],)
	nodes_index = float.(1:1:size(position_time,1))
	itp = interpolate(nodes, nodes_index, (Gridded(Constant())))

	nGroups = size(list_channels,1)

	print("subtracting the low pass (fc=350Hz) filtered voltage to itself ")

	buffer_mmap = zeros(Float32,BUFFERSIZE+15+16,size(mmapFile,2))
	#15 at the beginning to complete early spikes of the buffer
	#16 at the end to complete final spike of the buffer
	state = zeros(Float32,size(channel_focus,1))
	old_possibleSpike_sum = map(id->zeros(Int64,14),1:1:nGroups)
	α = Float32(exp(-2π*350.0/samplingRate))
	β = Float32(1-α)
	thresholds = [zeros(Float32,(1,size(l,1))) for l in list_channels]

	feats = [] #list storing all spikes fromatted as Dict for tensorflow
	lastBuffIndex = (size(mmapFile,1)%BUFFERSIZE==0) ? (size(mmapFile,1)÷BUFFERSIZE) : (size(mmapFile,1)÷BUFFERSIZE)+1
	for idBuff in ProgressBar(1:1:lastBuffIndex)
		# we should begin at spikes which timing are above the first position measure:
		possibleTime_spike = collect(float.(1+(idBuff-1)*BUFFERSIZE:1:min(size(mmapFile,1),BUFFERSIZE*idBuff))./samplingRate)
		# we need to be careful with the last buffer, which might contain less elements
		posindexOfSpikes = zeros(Int64,size(possibleTime_spike,1)) #of size BUFFERSIZE or, for the last buffer, less
		if position_time[1,1]>possibleTime_spike[end]
			# no position should be saved:
			posindexOfSpikes .= -1
		elseif position_time[end,1]<possibleTime_spike[1]
			# no position should be saved:
			posindexOfSpikes .= -1
		elseif position_time[1,1]>=possibleTime_spike[1]
			# the buffer spreads over the min limit of position
			minTest = possibleTime_spike.-position_time[1,1]
			minTest[minTest.<0] .= Inf
			spikeMin = argmin(abs.(minTest))
			if position_time[end,1]>possibleTime_spike[end]
				nodeTest = (possibleTime_spike[spikeMin:end],)
				spikePosIndex = itp.(nodeTest)
				posindexOfSpikes[1:spikeMin-1] .= -1
				posindexOfSpikes[spikeMin:end] .= spikePosIndex[1]
			else
				maxTest = position_time[end,1].-possibleTime_spike
				maxTest[maxTest.<0] .= Inf
				spikeMax = argmin(abs.(maxTest))
				nodeTest = (possibleTime_spike[spikeMin:spikeMax],)
				spikePosIndex = itp.(nodeTest)
				posindexOfSpikes[1:spikeMin-1] .= -1
				posindexOfSpikes[spikeMin:spikeMax] .= spikePosIndex[1]
				posindexOfSpikes[spikeMax+1:end] .= -1
			end
		elseif position_time[1,1]<possibleTime_spike[1]
			if position_time[end,1]<=possibleTime_spike[end]
				# the buffer spreads over the max limit of position
				maxTest = position_time[end,1].-possibleTime_spike
				maxTest[maxTest.<0] .= Inf
				spikeMax = argmin(abs.(maxTest))
				nodeTest = (possibleTime_spike[1:spikeMax],)
				spikePosIndex = itp.(nodeTest)
				posindexOfSpikes[1:spikeMax] .= spikePosIndex[1]
				posindexOfSpikes[spikeMax+1:end] .= -1
			else
				# the buffer is included inside the max and the min limit of position
				nodeTest = (possibleTime_spike[1:end],)
				spikePosIndex = itp.(nodeTest)
				posindexOfSpikes .= spikePosIndex[1]
			end
		end
		#finally, we assign to each time step that belongs to a sleep period a posindex of -2
		# as referenced by the sleepEpcohs in nnBehavior.mat
		# which consists of an array [start,end,start,end,....] of sleep epochs
		# Note: for future purpose (decoding of other env feature present in sleep)
		# or decoding of feature found in the neurons activity this might not be the best
		# way to go. Notably if we want to train during sleep!
		posindexOfSpikes[isInEpochs(possibleTime_spike,sleepPeriods)] .= -2

		# first buffer: 15 first time step are set at 0
		 # other buffers: we already have filtered the end of the previous buffer (15 time steps) and beginning of the buffer (16 time steps)
		startid = idBuff == 1 ? 15 + 1 : 15+16+1
		#take care of last buffer:
		lastid = idBuff*BUFFERSIZE+16 > size(mmapFile,1) ? (size(mmapFile,1) - (idBuff-1)*BUFFERSIZE-1-16) + startid : size(buffer_mmap,1)
		buffer_mmap[startid:lastid,:] = idBuff == 1 ? mmapFile[1:min(BUFFERSIZE+16,size(mmapFile,1)),:].*0.195 : mmapFile[(idBuff-1)*BUFFERSIZE+16+1:min(idBuff*BUFFERSIZE+16,size(mmapFile,1)),:].*0.195
		#apply the low pass filter on the mmapFile:
		for id in (startid:1:size(buffer_mmap,1))
			temp = buffer_mmap[id,channel_focus] .- state
			state = α*state .+ β*buffer_mmap[id,channel_focus]
			buffer_mmap[id,channel_focus] .= temp
		end
		#Note: to reduce the memory footprint we decide to round the filtering result to the upper integer
		# 16/6/2021: modified by adding a temporal variable as in Intan filter.
		#

	    # print("applying spike thresholds")
		sidThresh = idBuff == 1 ? 1 : (15+1) #start index to look for new spikes
	    #thresholds are computed for each channel in each group....
	    possileSpike = map(id->zeros(Int64,BUFFERSIZE),1:1:size(list_channels,1))
	    possibleSpike_sum = map(id->zeros(Int64,BUFFERSIZE),1:1:size(list_channels,1))
	    noPreviousSpike = map(id->zeros(Int64,BUFFERSIZE),1:1:size(list_channels,1))

        #note: changed to see the effect of a varying threshold:
        #if idBuff == 1
        # for tppl in enumerate(list_channels)
    	# id,l = tppl
    	# thresholds[id] .= 3*std(buffer_mmap[sidThresh:end-16,l],dims=1)
    	# end
        #end
        thresholds = map(l->3*std(buffer_mmap[sidThresh:end-16,l],dims=1),list_channels)

        dicThresholds = Dict()
        map(i -> dicThresholds[i]=thresholds[i],1:1:size(thresholds,1))
        CSV.write(thresholdsFileName,dicThresholds ,append=true)

    	map(id->noPreviousSpike[id][1:end] .= prod(buffer_mmap[sidThresh:sidThresh+BUFFERSIZE-1,list_channels[id]] .>= -thresholds[id], dims=2)[:,1],1:1:size(list_channels,1))
    	map(id->possileSpike[id][1:end] .= sum(buffer_mmap[sidThresh:sidThresh+BUFFERSIZE-1,list_channels[id]] .< -thresholds[id], dims=2)[:,1],1:1:size(list_channels,1))
    	map(id->possibleSpike_sum[id][2:end] .= noPreviousSpike[id][1:end-1].*possileSpike[id][2:end],1:1:size(list_channels,1))
		#note: still work for the last buffer: the buffer_mmap is initialized at 0, so unless thresholds are at 0, which will never be the case
		#	we obtain possileSpike =0 for the time step beyond the end of the last buffer, and will therefore have no influence
		# to the rest of the algo.
    	#special case of first value of the buffer:
    	if idBuff>1
    		map(id->possibleSpike_sum[id][1] = possileSpike[id][sidThresh],1:1:size(list_channels,1))
			#so we have to save noPreviousSpike and garbage collect it correctly too.
		else
			#for the first buffer we don't have previous voltage measure so we accept to use the spike as is.
			map(id->possibleSpike_sum[id][1] = possileSpike[id][1],1:1:size(list_channels,1))
		end

		#finally we need to check if there was a spike in the 14 last bin of the previous possibleSpike_sum buffer...
		for index_before in 1:1:14
			for i in 1:1:nGroups
				if old_possibleSpike_sum[i][index_before] >0
					possibleSpike_sum[i][1:index_before] .= 0
				end
			end
		end

	    spikesFound = []
	    for index in 1:1:BUFFERSIZE #
	        time = float(index+(idBuff-1)*BUFFERSIZE)/samplingRate
	        for i in 1:1:nGroups
	            if possibleSpike_sum[i][index] >0 && (index+(idBuff-1)*BUFFERSIZE<=size(mmapFile,1)-16) #forbid too late spike because we would miss the info to capture waveform
	                # lastBestTime[i] = findtime(position_time,lastBestTime[i],time)
	                # posiiton_index = lastBestTime[i]
	                posiiton_index = posindexOfSpikes[index]
	                #time, group, spike_index, position_index
	                append!(spikesFound,[[time,i,index+(idBuff-1)*BUFFERSIZE,posiiton_index]])
	                # forbid other spikes in other channels of the group for 14 time-steps.
	                possibleSpike_sum[i][index:min(index+14,size(possibleSpike_sum[i],1))] .= 0
	            end
	        end
	    end
		spikesBehaveFound =[]
		spikesSleepFound =[]
	    #write last batch of spikes:
		if size(spikesFound,1)>0
		    spikesFound = transpose(reduce(hcat,spikesFound))
			CSV.write(fileName,(t=spikesFound[:,1],group=float(spikesFound[:,2]),
								spike_id=float(spikesFound[:,3]),pos_id=float(spikesFound[:,4])),append=true,
								header=["t", "group", "spike_id","pos_id"])
			#indicate that the last spikes were saved and can be used to forbid early spikes in the next buffer
			map(id->old_possibleSpike_sum[id] .= possibleSpike_sum[id][end-13:end],1:1:nGroups)
			#saving as a tensorflow tf.rec:

		    window_length = WINDOWSIZE
		    function stack_spikes(spIndex,g)
		    	if size(spIndex,1) ==0
		    		return zeros((0,size(list_channels[g],1),32))
		    	else
					spIndex = spIndex .- (idBuff-1)*BUFFERSIZE .+15 #correct to set at the right position in the buffer
		    		catspike = cat(map(s->buffer_mmap[Int(s)-15:Int(s)+16,list_channels[g]],spIndex)...,dims=3)
					# Julia and python do not ravel a tensor similarly,
					# For Julia, it progressively increases index from left to right gathering: [A[1,1,1],A[2,1,1],A[1,2,1],A[2,2,1],...]
					# Whereas Python starts from the end.
					# So that python reshape our array we thus store it by raveling from [32timsStepVoltageMeasure,NChannel,NspikesIn36msWindow]
					# And it will be read as [NspikesIn36msWindow,NChannel,32timsStepVoltageMeasure] in python!
					# So we don't permutedims!
					#permutedims(catspike,[3,2,1])
		    		return catspike
		    	end
		    end
	    	inBehaveEpoch = spikesFound[:,4] .> -1
	    	spikesBehaveFound = spikesFound[inBehaveEpoch,:]
			inSleepEpoch = spikesFound[:,4] .== -2
			spikesSleepFound = spikesFound[inSleepEpoch,:]
		end

		function saveSpikesFound(spikesFound)
			feats = []
			if size(spikesFound,1)>0 #if there is any spike to extract:
			    #🔥 : the group will be indexed from 0 to nGroups-1 in python
			    # so we need to do the same in Julia

			    #Let us find the start of windows aligned on the first spike of windows of length window_stride (36ms)
			    currentFirstSpikeTime = spikesFound[1,1]
                currentFirstSpikeId = 1
                startWind = []
                for i in 1:1:size(spikesFound,1)
                    if (spikesFound[i,1]>currentFirstSpikeTime+WINDOWSTRIDE) # we find the beginning of the next window
                        append!(startWind,[currentFirstSpikeId])
                        currentFirstSpikeId = i
                        currentFirstSpikeTime = spikesFound[i,1]
                    else
                        if(i==size(spikesFound,1))
                           append!(startWind,[currentFirstSpikeId])
                        # println("unfinished 36 ms window at buffer limit")
                        end
                    end
                end

                #For each of these start we find the stopindex =(last spike id)+1 which is less than window_length from the starting spike
                stopWind = []
			    currentWindow = 1
			    lastSpikeId = size(spikesFound,1)
                for i in 1:1:size(spikesFound,1)
                    if (spikesFound[i,1]>spikesFound[startWind[currentWindow],1]+window_length) # we find the beginning of the next window
                        append!(stopWind,[i])
                        currentWindow= currentWindow + 1
                    end
                end
                # Account for situations when WINDOWSIZE > WINDOWSTRIDE (late windows in the buffer are shorter)
                while (size(stopWind,1)!=size(startWind,1))
                   append!(stopWind,[lastSpikeId+1])
                   currentWindow= currentWindow + 1
                end
                # println("unfinished longer window at buffer limit")

                for i in 1:1:size(stopWind,1)
                    startindex = startWind[i]
                    lastindex = stopWind[i]

                    spikeIndex = [spikesFound[startindex:lastindex-1,3][spikesFound[startindex:lastindex-1,2].==g] for g in 1:1:nGroups]
                    spikes = [stack_spikes(spikeIndex[g],g) for g in 1:1:nGroups]

                    # save into tensorflow the spike window:
                    if spikesFound[lastindex-1,4] == -2
                        feat = Dict(
                            "pos_index" => [-2],
                            "pos" => Float32.([0,0]),
                            "length" =>[lastindex-startindex],
                            "groups" => Int.(spikesFound[startindex:(lastindex-1),2] .-1),
                            "time" => [Float32.(mean(spikesFound[startindex:(lastindex-1), 1]))],
                            "indexInDat" => Int.(spikesFound[startindex:(lastindex-1),3] .-1)
                        )
                    else
                        feat = Dict(
                            "pos_index" => [Int(spikesFound[lastindex-1,4])-1],
                            "pos" => Float32.(positions[Int(spikesFound[lastindex-1,4]),:]/maxpos),
                            "length" =>[lastindex-startindex],
                            "groups" => Int.(spikesFound[startindex:(lastindex-1),2] .-1),
                            "time" => [Float32.(mean(spikesFound[startindex:(lastindex-1), 1]))],
                            "indexInDat" => Int.(spikesFound[startindex:(lastindex-1),3] .-1)
                        )
                    end
                    # Pierre: convert the spikes dic into a tf.train.Feature, used for the tensorflow protocol.
                    # their is no reason to change the key name but still done here.
                    for g in 1:1:nGroups
                        feat[string("group",g-1)] = Array{Float32}(vcat(spikes[g]...).*0.195)
                    end
                    append!(feats,[feat])
                end
			end
			return feats
		end
		feats = saveSpikesFound(spikesBehaveFound)
		if size(feats,1)>0
			TFRecord.write(datasetName,feats)
		end
		feats = saveSpikesFound(spikesSleepFound)
		if size(feats,1)>0
			TFRecord.write(datasetNameSleep,feats)
		end

		buffer_end = buffer_mmap[end-15-16+1:end]
		#save the end of the buffer mmap as we will use it again
		#without filtering it once more.
		buffer_mmap = zeros(Float32,1) #before: Int16
		feats = []
		GC.gc() #garbage collect the buffer as well as the feat dictionaries and all other arrays
		buffer_mmap = zeros(Float32,BUFFERSIZE+15+16,size(mmapFile,2))
		buffer_mmap[1:31] .= buffer_end
	end
end

extract_spike_with_buffer(xmlPath,datPath,behavePath,fileName,datasetName,datasetNameSleep,BUFFERSIZE,WINDOWSIZE)

```

The problem is that I get the following error message :

> [@snipick19](#):
>
> Activating environment at `~/Dropbox/Mobs_member/Basile/Code/full_neuroEncoder/neuroEncoders-master/importData/juliaData/Project.toml`
> 
> ERROR: LoadError: LoadError: TypeError: in Type{…} expression, expected UnionAll, got Type{Parsers.Options}
> 
> Stacktrace:
> 
> [1] top-level scope at /home/mobs/.julia/packages/CSV/CJfFO/src/detection.jl:164
> 
> [2] include(::Function, ::Module, ::String) at ./Base.jl:380
> 
> [3] include at ./Base.jl:368 [inlined]
> 
> [4] include(::String) at /home/mobs/.julia/packages/CSV/CJfFO/src/CSV.jl:1
> 
> [5] top-level scope at /home/mobs/.julia/packages/CSV/CJfFO/src/CSV.jl:27
> 
> [6] include(::Function, ::Module, ::String) at ./Base.jl:380
> 
> [7] include(::Module, ::String) at ./Base.jl:368
> 
> [8] top-level scope at none:2
> 
> [9] eval at ./boot.jl:331 [inlined]
> 
> [10] eval(::Expr) at ./client.jl:467
> 
> [11] top-level scope at ./none:3
> 
> in expression starting at /home/mobs/.julia/packages/CSV/CJfFO/src/detection.jl:164
> 
> in expression starting at /home/mobs/.julia/packages/CSV/CJfFO/src/CSV.jl:27
> 
> ERROR: LoadError: Failed to precompile CSV [336ed68f-0bac-5ca0-87d4-7b16caf5d00b] to /home/mobs/.julia/compiled/v1.5/CSV/HHBkp\_ggeaS.ji.
> 
> Stacktrace:
> 
> [1] error(::String) at ./error.jl:33
> 
> [2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1305
> 
> [3] \_require(::Base.PkgId) at ./loading.jl:1030
> 
> [4] require(::Base.PkgId) at ./loading.jl:928
> 
> [5] require(::Module, ::Symbol) at ./loading.jl:923
> 
> [6] include(::Function, ::Module, ::String) at ./Base.jl:380
> 
> [7] include(::Module, ::String) at ./Base.jl:368
> 
> [8] exec\_options(::Base.JLOptions) at ./client.jl:296
> 
> [9] \_start() at ./client.jl:506
> 
> in expression starting at /home/mobs/Dropbox/Mobs\_member/Basile/Code/full\_neuroEncoder/neuroEncoders-master/importData/juliaData/spikeFilter\_withStride.jl:3

Does anyone know how I could fix the problem ? I tried updating all the julia packages and reinstalling the CSV package but it didn’t work.

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [February 19, 2024, 4:21pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/2 "2024-02-19T16:21:49Z")

</div>

You have some _very_ old versions of packages in there… somewhere… leading to these incompatibilities.

> [@CSV.jl fails precompling, TypeError: in Type{...} expression, expected UnionAll, got Type{Parsers.Options}](https://discourse.julialang.org/t/csv-jl-fails-precompling-typeerror-in-type-expression-expected-unionall-got-type-parsers-options/67195/3):
>
> This has come up a couple of times recently and is due to a new breaking release in the Parsers.jl v2.0 release, which in and of itself shouldn’t cause problems, since CSV.jl 0.8.5 has dependencies correctly capped, but still becomes an issue because there are unfortunate ways for package dependencies to get loaded without having the right versions. See [this slack thread](https://julialang.slack.com/archives/CBF3Z1D7V/p1628806926093700) for more details. Basically, it boils down to some 3rd-party package (in this case, probably IJulia.jl) loading a package like…

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 19, 2024, 4:40pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/3 "2024-02-19T16:40:25Z")

</div>

Thank you, I’ll check it out.

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [February 19, 2024, 5:15pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/4 "2024-02-19T17:15:40Z")

</div>

Do you happen to have the original author’s Manifest.toml? From that we may be able to reconstruct the environment in which this code was intended to run.

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 20, 2024, 9:05am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/5 "2024-02-20T09:05:56Z")

</div>

I didn’t know how to find it so I asked ChatGPT. Here is what he told me :

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

> [@chatgpt](#):
>
> On Ubuntu, the `Manifest.toml` file is typically located in the `.julia` directory in your home directory. Here’s how you can find it:
> 
> 1. **Open Terminal** : Open a terminal window on your Ubuntu system.
> 
> 2. **Navigate to Home Directory** : Use the `cd` command to navigate to your home directory. You can do this by simply typing `cd` and pressing Enter.
> 
> 3. **List Hidden Files** : The `.julia` directory is hidden by default, so you’ll need to use the `-a` flag with the `ls` command to list hidden files and directories. Type the following command and press Enter:
> 
> 4. **Navigate to .julia Directory** : Look for the `.julia` directory in the list of files and directories displayed by the `ls -a` command. Once you find it, use the `cd` command to navigate into the `.julia` directory:
> 
> 5. **List Files in .julia Directory** : Once you’re inside the `.julia` directory, you can use the `ls` command to list the files and directories it contains. You should see the `Manifest.toml` file among the list of files.
> 
> 6. **View Manifest.toml** : Once you’ve located the `Manifest.toml` file, you can view its contents using a text editor or command-line tools. For example, you can use the `cat` command to display the contents in the terminal:
> 
> By following these steps, you should be able to locate the `Manifest.toml` file in the `.julia` directory in your home directory on Ubuntu. If you have any further questions or need assistance, feel free to ask!

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

So I did that and couldn’t find it :

![terminql](https://global.discourse-cdn.com/julialang/original/3X/6/9/6963e02ac26f756fead741f77860a05f76079f49.png)

So I told chatGPT that and he told me to use the command ‘find ~ -name “Manifest.toml”’ which resulted in a huge list that I don’t really know how to use (I would have put a screenshot here but ‘new users aren’t allowed to put more than one embedded image’…)

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 20, 2024, 9:14am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/6 "2024-02-20T09:14:40Z")

</div>

Here is the list (a part of it) :

 ![ssss](https://global.discourse-cdn.com/julialang/original/3X/e/7/e79ee61b81dd63d9fde555a9b71dd98b3a136731.png)

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 20, 2024, 9:34am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/7 "2024-02-20T09:34:31Z")

</div>

Oh, I forgot to say, the computer I’m using has Julia v1.5.3 whereas the computer on which the program I’m trying to run was created has Julia v1.6.1.

I’ve just tried uploading v1.6.1 and adding CSV package with Pkg.add(“CSV”). Then I changed /path/to/julia1.5.3 to /path/to/julia1.6.1 in the shell script used to run the program and now I get the following error message :

> [@Error message that makes me sad](#):
>
> Starting Spike extraction using the julia language  
> Activating environment at `~/Dropbox/Mobs_member/Basile/Code/full_neuroEncoder/neuroEncoders-master/importData/juliaData/Project.toml`  
> ┌ Warning: Package Parsers does not have UUIDs in its dependencies:  
> │ - If you have Parsers checked out for development and have  
> │ added UUIDs as a dependency but haven’t updated your primary  
> │ environment’s manifest file, try `Pkg.resolve()`.  
> │ - Otherwise you may need to report an issue with Parsers  
> └ Loading UUIDs into Parsers from project dependency, future warnings for Parsers are suppressed.  
> ERROR: LoadError: LoadError: ArgumentError: Package Parsers does not have PrecompileTools in its dependencies:
> 
> - If you have Parsers checked out for development and have  
> added PrecompileTools as a dependency but haven’t updated your primary  
> environment’s manifest file, try `Pkg.resolve()`.
> - Otherwise you may need to report an issue with Parsers  
> Stacktrace:  
> [1] require(into::Module, mod::Symbol)  
> @ Base ./loading.jl:884  
> [2] include(mod::Module, \_path::String)  
> @ Base ./Base.jl:386  
> [3] include(x::String)  
> @ Parsers ~/.julia/packages/Parsers/fKIy3/src/Parsers.jl:1  
> [4] top-level scope  
> @ ~/.julia/packages/Parsers/fKIy3/src/Parsers.jl:510  
> [5] include  
> @ ./Base.jl:386 [inlined]  
> [6] include\_package\_for\_output(pkg::Base.PkgId, input::String, depot\_path::Vector{String}, dl\_load\_path::Vector{String}, load\_path::Vector{String}, concrete\_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)  
> @ Base ./loading.jl:1213  
> [7] top-level scope  
> @ none:1  
> [8] eval  
> @ ./boot.jl:360 [inlined]  
> [9] eval(x::Expr)  
> @ Base.MainInclude ./client.jl:446  
> [10] top-level scope  
> @ none:1  
> in expression starting at /home/mobs/.julia/packages/Parsers/fKIy3/src/precompile.jl:1  
> in expression starting at /home/mobs/.julia/packages/Parsers/fKIy3/src/Parsers.jl:1  
> ERROR: LoadError: Failed to precompile Parsers [69de0a69-1ddd-5017-9359-2bf0b02dc9f0] to /home/mobs/.julia/compiled/v1.6/Parsers/jl\_IwOP5x.  
> Stacktrace:  
> [1] error(s::String)  
> @ Base ./error.jl:33  
> [2] compilecache(pkg::Base.PkgId, path::String, internal\_stderr::Base.PipeEndpoint, internal\_stdout::Base.PipeEndpoint)  
> @ Base ./loading.jl:1360  
> [3] compilecache(pkg::Base.PkgId, path::String)  
> @ Base ./loading.jl:1306  
> [4] \_require(pkg::Base.PkgId)  
> @ Base ./loading.jl:1021  
> [5] require(uuidkey::Base.PkgId)  
> @ Base ./loading.jl:914  
> [6] require(into::Module, mod::Symbol)  
> @ Base ./loading.jl:901  
> [7] include  
> @ ./Base.jl:386 [inlined]  
> [8] include\_package\_for\_output(pkg::Base.PkgId, input::String, depot\_path::Vector{String}, dl\_load\_path::Vector{String}, load\_path::Vector{String}, concrete\_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)  
> @ Base ./loading.jl:1213  
> [9] top-level scope  
> @ none:1  
> [10] eval  
> @ ./boot.jl:360 [inlined]  
> [11] eval(x::Expr)  
> @ Base.MainInclude ./client.jl:446  
> [12] top-level scope  
> @ none:1  
> in expression starting at /home/mobs/.julia/packages/CSV/CJfFO/src/CSV.jl:1  
> ERROR: LoadError: Failed to precompile CSV [336ed68f-0bac-5ca0-87d4-7b16caf5d00b] to /home/mobs/.julia/compiled/v1.6/CSV/jl\_TMSV3c.  
> Stacktrace:  
> [1] error(s::String)  
> @ Base ./error.jl:33  
> [2] compilecache(pkg::Base.PkgId, path::String, internal\_stderr::Base.PipeEndpoint, internal\_stdout::Base.PipeEndpoint)  
> @ Base ./loading.jl:1360  
> [3] compilecache(pkg::Base.PkgId, path::String)  
> @ Base ./loading.jl:1306  
> [4] \_require(pkg::Base.PkgId)  
> @ Base ./loading.jl:1021  
> [5] require(uuidkey::Base.PkgId)  
> @ Base ./loading.jl:914  
> [6] require(into::Module, mod::Symbol)  
> @ Base ./loading.jl:901  
> in expression starting at /home/mobs/Dropbox/Mobs\_member/Basile/Code/full\_neuroEncoder/neuroEncoders-master/importData/juliaData/spikeFilter\_withStride.jl:3

Also I feel like I have to say : I’m not only new to Julia, I am new to programming in general. I mean I do have the basics and I can do some things, but as soon as it gets more than a syntaxic error, I get very confused, and that error message is just gibberish for me.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [February 20, 2024, 10:13am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/8 "2024-02-20T10:13:16Z")

</div>

Why are you using Julia 1.5.3, i.e. an even older version of Julia than the one used to develop the original code?

I would recommend you use Julia 1.6.7, the current patch release of Julia 1.6. Then `cd` into the directory that holds your `Project.toml` file and `]instantiate` it. Show us the output of `]st` after you’ve done that. (Just to be sure, commands prefixed by `]` should be entered in the Pkg REPL mode which you access by pressing `]`.)

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 20, 2024, 10:21am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/9 "2024-02-20T10:21:27Z")

</div>

It’s just the version that was already installed on the computer of the lab I’m using (which isn’t the same computer as the one that was used to write the original code) when I began 2 days ago. Basically my predecessor told me the code was a mess, wished me good luck and now I have to deal with this issue, which I imagine is only the first one among many others that will come.

I will try what you said.

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [February 20, 2024, 10:28am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/10 "2024-02-20T10:28:44Z")

</div>

FWIW in Julia 1.10 adding all the packages in your OP to a clean environment resolves to:

```julia
(jl_KoNia5) pkg> st
  [336ed68f] CSV v0.10.12
  [a93c6f00] DataFrames v1.6.1
  [31c24e10] Distributions v0.25.107
  [f67ccb44] HDF5 v0.17.1
  [a98d9a8b] Interpolations v0.15.1
  [9c8b4983] LightXML v0.9.1
  [23992714] MAT v0.10.6
  [49802e3a] ProgressBars v1.5.1
  [841416d8] TFRecord v0.4.2
  [a63ad114] Mmap

```

i.e. all packages are at their latest released versions and compile fine. These package versions will be different (newer) than what was used to write the code you’ve got, so you might have to fix up some things if your code was relying on some package syntax that has changed since.

This is why Mark asked about the `Manifest.toml` above - from the Manifest you can re-instantiate the exact environment including the exact versions of all direct and transitive dependencies that were used when the code was written, while the `Project.toml` just records which packages are needed and when `instantiate`d will try to get you the latest compatible versions of those packages.

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 20, 2024, 10:38am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/11 "2024-02-20T10:38:11Z")

</div>

I finally managed to find the `Manifest.toml`.

Here it is :

```julia
# This file is machine-generated - editing it directly is not advised

[[AbstractFFTs]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "485ee0867925449198280d4af84bdb46a2a404d0"
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
version = "1.0.1"

[[Adapt]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "f1b523983a58802c4695851926203b36e28f09db"
uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
version = "3.3.0"

[[Artifacts]]
deps = ["Pkg"]
git-tree-sha1 = "c30985d8821e0cd73870b17b0ed0ce6dc44cb744"
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
version = "1.3.0"

[[AxisAlgorithms]]
deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"]
git-tree-sha1 = "a4d07a1c313392a77042855df46c5f534076fab9"
uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950"
version = "1.0.0"

[[Base64]]
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"

[[Blosc]]
deps = ["Blosc_jll"]
git-tree-sha1 = "84cf7d0f8fd46ca6f1b3e0305b4b4a37afe50fd6"
uuid = "a74b3585-a348-5f62-a45c-50e91977d574"
version = "0.7.0"

[[Blosc_jll]]
deps = ["Libdl", "Lz4_jll", "Pkg", "Zlib_jll", "Zstd_jll"]
git-tree-sha1 = "aa9ef39b54a168c3df1b2911e7797e4feee50fbe"
uuid = "0b7ba130-8d10-5ba8-a3d6-c5182647fed9"
version = "1.14.3+1"

[[BufferedStreams]]
deps = ["Compat", "Test"]
git-tree-sha1 = "5d55b9486590fdda5905c275bb21ce1f0754020f"
uuid = "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d"
version = "1.0.0"

[[CEnum]]
git-tree-sha1 = "215a9aa4a1f23fbd05b92769fdd62559488d70e9"
uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
version = "0.4.1"

[[CRC32c]]
uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc"

[[CSV]]
deps = ["Dates", "Mmap", "Parsers", "PooledArrays", "SentinelArrays", "Tables", "Unicode"]
git-tree-sha1 = "6d4242ef4cb1539e7ede8e01a47a32365e0a34cd"
uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
version = "0.8.4"

[[CategoricalArrays]]
deps = ["DataAPI", "Future", "JSON", "Missings", "Printf", "Statistics", "StructTypes", "Unicode"]
git-tree-sha1 = "f713d583d10fc036252fd826feebc6c173c522a8"
uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597"
version = "0.9.5"

[[ChainRulesCore]]
deps = ["Compat", "LinearAlgebra", "SparseArrays"]
git-tree-sha1 = "44e9f638aa9ed1ad58885defc568c133010140aa"
uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
version = "0.9.37"

[[CodecZlib]]
deps = ["TranscodingStreams", "Zlib_jll"]
git-tree-sha1 = "ded953804d019afa9a3f98981d99b33e3db7b6da"
uuid = "944b1d66-785c-5afd-91f1-9de20f533193"
version = "0.7.0"

[[ColorTypes]]
deps = ["FixedPointNumbers", "Random"]
git-tree-sha1 = "32a2b8af383f11cbb65803883837a149d10dfe8a"
uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
version = "0.10.12"

[[Colors]]
deps = ["ColorTypes", "FixedPointNumbers", "Reexport"]
git-tree-sha1 = "82f4e6ff9f847eca3e5ebc666ea2cd7b48e8b47e"
uuid = "5ae59095-9a9b-59fe-a467-6f913c188581"
version = "0.12.7"

[[Compat]]
deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"]
git-tree-sha1 = "ac4132ad78082518ec2037ae5770b6e796f7f956"
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
version = "3.27.0"

[[CompilerSupportLibraries_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "8e695f735fca77e9708e795eda62afdb869cbb70"
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
version = "0.3.4+0"

[[Conda]]
deps = ["JSON", "VersionParsing"]
git-tree-sha1 = "6231e40619c15148bcb80aa19d731e629877d762"
uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d"
version = "1.5.1"

[[Crayons]]
git-tree-sha1 = "3f71217b538d7aaee0b69ab47d9b7724ca8afa0d"
uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f"
version = "4.0.4"

[[DSP]]
deps = ["FFTW", "IterTools", "LinearAlgebra", "Polynomials", "Random", "Reexport", "SpecialFunctions", "Statistics"]
git-tree-sha1 = "2a63cb5fc0e8c1f0f139475ef94228c7441dc7d0"
uuid = "717857b8-e6f2-59f4-9121-6e50c889abd2"
version = "0.6.10"

[[DataAPI]]
git-tree-sha1 = "dfb3b7e89e395be1e25c2ad6d7690dc29cc53b1d"
uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
version = "1.6.0"

[[DataFrames]]
deps = ["CategoricalArrays", "Compat", "DataAPI", "Future", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Reexport", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"]
git-tree-sha1 = "d50972453ef464ddcebdf489d11885468b7b83a3"
uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
version = "0.22.7"

[[DataStructures]]
deps = ["Compat", "InteractiveUtils", "OrderedCollections"]
git-tree-sha1 = "4437b64df1e0adccc3e5d1adbc3ac741095e4677"
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
version = "0.18.9"

[[DataValueInterfaces]]
git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464"
version = "1.0.0"

[[Dates]]
deps = ["Printf"]
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"

[[DelimitedFiles]]
deps = ["Mmap"]
uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"

[[Distributed]]
deps = ["Random", "Serialization", "Sockets"]
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"

[[Distributions]]
deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns"]
git-tree-sha1 = "e64debe8cd174cc52d7dd617ebc5492c6f8b698c"
uuid = "31c24e10-a181-5473-b8eb-7969acd0382f"
version = "0.24.15"

[[ExprTools]]
git-tree-sha1 = "10407a39b87f29d47ebaca8edbc75d7c302ff93e"
uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04"
version = "0.1.3"

[[EzXML]]
deps = ["Printf", "XML2_jll"]
git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268"
uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615"
version = "1.1.0"

[[FFTW]]
deps = ["AbstractFFTs", "FFTW_jll", "IntelOpenMP_jll", "Libdl", "LinearAlgebra", "MKL_jll", "Reexport"]
git-tree-sha1 = "1b48dbde42f307e48685fa9213d8b9f8c0d87594"
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
version = "1.3.2"

[[FFTW_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "5a0d4b6a22a34d17d53543bd124f4b08ed78e8b0"
uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a"
version = "3.3.9+7"

[[FillArrays]]
deps = ["LinearAlgebra", "Random", "SparseArrays"]
git-tree-sha1 = "31939159aeb8ffad1d4d8ee44d07f8558273120a"
uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
version = "0.11.7"

[[FixedPointNumbers]]
deps = ["Statistics"]
git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc"
uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
version = "0.8.4"

[[Formatting]]
deps = ["Printf"]
git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8"
uuid = "59287772-0a20-5a39-b81b-1366585eb4c0"
version = "0.4.2"

[[Future]]
deps = ["Random"]
uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"

[[Graphics]]
deps = ["Colors", "LinearAlgebra", "NaNMath"]
git-tree-sha1 = "2c1cf4df419938ece72de17f368a021ee162762e"
uuid = "a2bd30eb-e257-5431-a919-1863eab51364"
version = "1.1.0"

[[HDF5]]
deps = ["Blosc", "Compat", "HDF5_jll", "Libdl", "Mmap", "Random", "Requires"]
git-tree-sha1 = "8a21f34a34491833bcda29a3ec2188b4ec6e558f"
uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f"
version = "0.15.4"

[[HDF5_jll]]
deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "OpenSSL_jll", "Pkg", "Zlib_jll"]
git-tree-sha1 = "fd83fa0bde42e01952757f01149dd968c06c4dba"
uuid = "0234f1f7-429e-5d53-9886-15a909be8d59"
version = "1.12.0+1"

[[ImageCore]]
deps = ["AbstractFFTs", "Colors", "FixedPointNumbers", "Graphics", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "Reexport"]
git-tree-sha1 = "db645f20b59f060d8cfae696bc9538d13fd86416"
uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534"
version = "0.8.22"

[[IndirectArrays]]
git-tree-sha1 = "c2a145a145dc03a7620af1444e0264ef907bd44f"
uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959"
version = "0.5.1"

[[IntelOpenMP_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "d979e54b71da82f3a65b62553da4fc3d18c9004c"
uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0"
version = "2018.0.3+2"

[[InteractiveUtils]]
deps = ["Markdown"]
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"

[[Interpolations]]
deps = ["AxisAlgorithms", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"]
git-tree-sha1 = "eb1dd6d5b2275faaaa18533e0fc5f9171cec25fa"
uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59"
version = "0.13.1"

[[Intervals]]
deps = ["Dates", "Printf", "RecipesBase", "Serialization", "TimeZones"]
git-tree-sha1 = "323a38ed1952d30586d0fe03412cde9399d3618b"
uuid = "d8418881-c3e1-53bb-8760-2df7ec849ed5"
version = "1.5.0"

[[InvertedIndices]]
deps = ["Test"]
git-tree-sha1 = "15732c475062348b0165684ffe28e85ea8396afc"
uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f"
version = "1.0.0"

[[IterTools]]
git-tree-sha1 = "05110a2ab1fc5f932622ffea2a003221f4782c18"
uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e"
version = "1.3.0"

[[IteratorInterfaceExtensions]]
git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
uuid = "82899510-4779-5014-852e-03e436cf321d"
version = "1.0.0"

[[JLLWrappers]]
git-tree-sha1 = "a431f5f2ca3f4feef3bd7a5e94b8b8d4f2f647a0"
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
version = "1.2.0"

[[JSON]]
deps = ["Dates", "Mmap", "Parsers", "Unicode"]
git-tree-sha1 = "81690084b6198a2e1da36fcfda16eeca9f9f24e4"
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
version = "0.21.1"

[[LaTeXStrings]]
git-tree-sha1 = "c7f1c695e06c01b95a67f0cd1d34994f3e7db104"
uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
version = "1.2.1"

[[LazyArtifacts]]
deps = ["Pkg"]
git-tree-sha1 = "4bb5499a1fc437342ea9ab7e319ede5a457c0968"
uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3"
version = "1.3.0"

[[LibCURL_jll]]
deps = ["LibSSH2_jll", "Libdl", "MbedTLS_jll", "Pkg", "Zlib_jll", "nghttp2_jll"]
git-tree-sha1 = "897d962c20031e6012bba7b3dcb7a667170dad17"
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
version = "7.70.0+2"

[[LibGit2]]
deps = ["Printf"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"

[[LibSSH2_jll]]
deps = ["Libdl", "MbedTLS_jll", "Pkg"]
git-tree-sha1 = "717705533148132e5466f2924b9a3657b16158e8"
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
version = "1.9.0+3"

[[Libdl]]
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"

[[Libiconv_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "8e924324b2e9275a51407a4e06deb3455b1e359f"
uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531"
version = "1.16.0+7"

[[LightXML]]
deps = ["Libdl", "XML2_jll"]
git-tree-sha1 = "e129d9391168c677cd4800f5c0abb1ed8cb3794f"
uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179"
version = "0.9.0"

[[LinearAlgebra]]
deps = ["Libdl"]
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"

[[Logging]]
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"

[[Lz4_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "51b1db0732bbdcfabb60e36095cc3ed9c0016932"
uuid = "5ced341a-0733-55b8-9ab6-a4889d929147"
version = "1.9.2+2"

[[MAT]]
deps = ["BufferedStreams", "CodecZlib", "HDF5", "SparseArrays"]
git-tree-sha1 = "5c62992f3d46b8dce69bdd234279bb5a369db7d5"
uuid = "23992714-dd62-5051-b70f-ba57cb901cac"
version = "0.10.1"

[[MKL_jll]]
deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"]
git-tree-sha1 = "c253236b0ed414624b083e6b72bfe891fbd2c7af"
uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
version = "2021.1.1+1"

[[MacroTools]]
deps = ["Markdown", "Random"]
git-tree-sha1 = "6a8a2a625ab0dea913aba95c11370589e0239ff0"
uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
version = "0.5.6"

[[MappedArrays]]
git-tree-sha1 = "18d3584eebc861e311a552cbb67723af8edff5de"
uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900"
version = "0.4.0"

[[Markdown]]
deps = ["Base64"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"

[[MbedTLS_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "0eef589dd1c26a3ac9d753fe1a8bcad63f956fa6"
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
version = "2.16.8+1"

[[Missings]]
deps = ["DataAPI"]
git-tree-sha1 = "f8c673ccc215eb50fcadb285f522420e29e69e1c"
uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
version = "0.4.5"

[[Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804"

[[Mocking]]
deps = ["ExprTools"]
git-tree-sha1 = "916b850daad0d46b8c71f65f719c49957e9513ed"
uuid = "78c3b35d-d492-501b-9361-3d52fe80e533"
version = "0.7.1"

[[MosaicViews]]
deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"]
git-tree-sha1 = "b34e3bc3ca7c94914418637cb10cc4d1d80d877d"
uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389"
version = "0.3.3"

[[NaNMath]]
git-tree-sha1 = "bfe47e760d60b82b66b61d2d44128b62e3a369fb"
uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
version = "0.3.5"

[[OffsetArrays]]
deps = ["Adapt"]
git-tree-sha1 = "b3dfef5f2be7d7eb0e782ba9146a5271ee426e90"
uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881"
version = "1.6.2"

[[OpenSSL_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "71bbbc616a1d710879f5a1021bcba65ffba6ce58"
uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
version = "1.1.1+6"

[[OpenSpecFun_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "9db77584158d0ab52307f8c04f8e7c08ca76b5b3"
uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
version = "0.5.3+4"

[[OrderedCollections]]
git-tree-sha1 = "4fa2ba51070ec13fcc7517db714445b4ab986bdf"
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
version = "1.4.0"

[[PDMats]]
deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"]
git-tree-sha1 = "f82a0e71f222199de8e9eb9a09977bd0767d52a0"
uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
version = "0.11.0"

[[PNGFiles]]
deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"]
git-tree-sha1 = "28f9667d6ca9168b7198a481847f0879e6c72ef1"
uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883"
version = "0.3.6"

[[PaddedViews]]
deps = ["OffsetArrays"]
git-tree-sha1 = "0fa5e78929aebc3f6b56e1a88cf505bb00a354c4"
uuid = "5432bcbf-9aad-5242-b902-cca2824c8663"
version = "0.5.8"

[[Parsers]]
deps = ["Dates"]
git-tree-sha1 = "c8abc88faa3f7a3950832ac5d6e690881590d6dc"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "1.1.0"

[[Pkg]]
deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"]
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"

[[Polynomials]]
deps = ["Intervals", "LinearAlgebra", "OffsetArrays", "RecipesBase"]
git-tree-sha1 = "0b15f3597b01eb76764dd03c3c23d6679a3c32c8"
uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45"
version = "1.2.1"

[[PooledArrays]]
deps = ["DataAPI", "Future"]
git-tree-sha1 = "cde4ce9d6f33219465b55162811d8de8139c0414"
uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720"
version = "1.2.1"

[[PrettyTables]]
deps = ["Crayons", "Formatting", "Markdown", "Reexport", "Tables"]
git-tree-sha1 = "574a6b3ea95f04e8757c0280bb9c29f1a5e35138"
uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
version = "0.11.1"

[[Printf]]
deps = ["Unicode"]
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"

[[ProgressBars]]
deps = ["Printf"]
git-tree-sha1 = "b25377c38da4181e99832328a240c73f3d57fff2"
uuid = "49802e3a-d2f1-5c88-81d8-b72133a6f568"
version = "1.0.0"

[[ProgressMeter]]
deps = ["Distributed", "Printf"]
git-tree-sha1 = "6e9c89cba09f6ef134b00e10625590746ba1e036"
uuid = "92933f4c-e287-5a05-a399-4b506db050ca"
version = "1.5.0"

[[ProtoBuf]]
deps = ["Compat", "Logging"]
git-tree-sha1 = "9ecf92287404ebe5666a1c0488c3aaf90bbb5ff4"
uuid = "3349acd9-ac6a-5e09-bcdb-63829b23a429"
version = "0.10.0"

[[PyCall]]
deps = ["Conda", "Dates", "Libdl", "LinearAlgebra", "MacroTools", "Serialization", "VersionParsing"]
git-tree-sha1 = "169bb8ea6b1b143c5cf57df6d34d022a7b60c6db"
uuid = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0"
version = "1.92.3"

[[PyPlot]]
deps = ["Colors", "LaTeXStrings", "PyCall", "Sockets", "Test", "VersionParsing"]
git-tree-sha1 = "67dde2482fe1a72ef62ed93f8c239f947638e5a2"
uuid = "d330b81b-6aea-500a-939a-2ce795aea3ee"
version = "2.9.0"

[[QuadGK]]
deps = ["DataStructures", "LinearAlgebra"]
git-tree-sha1 = "12fbe86da16df6679be7521dfb39fbc861e1dc7b"
uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
version = "2.4.1"

[[REPL]]
deps = ["InteractiveUtils", "Markdown", "Sockets"]
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"

[[Random]]
deps = ["Serialization"]
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"

[[Ratios]]
git-tree-sha1 = "37d210f612d70f3f7d57d488cb3b6eff56ad4e41"
uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439"
version = "0.4.0"

[[RecipesBase]]
git-tree-sha1 = "b3fb709f3c97bfc6e948be68beeecb55a0b340ae"
uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
version = "1.1.1"

[[Reexport]]
git-tree-sha1 = "57d8440b0c7d98fc4f889e478e80f268d534c9d5"
uuid = "189a3867-3050-52da-a836-e630ba90ab69"
version = "1.0.0"

[[Requires]]
deps = ["UUIDs"]
git-tree-sha1 = "4036a3bd08ac7e968e27c203d45f5fff15020621"
uuid = "ae029012-a4dd-5104-9daa-d747884805df"
version = "1.1.3"

[[Rmath]]
deps = ["Random", "Rmath_jll"]
git-tree-sha1 = "86c5647b565873641538d8f812c04e4c9dbeb370"
uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa"
version = "0.6.1"

[[Rmath_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "1b7bf41258f6c5c9c31df8c1ba34c1fc88674957"
uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f"
version = "0.2.2+2"

[[SHA]]
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"

[[SentinelArrays]]
deps = ["Dates", "Random"]
git-tree-sha1 = "6ccde405cf0759eba835eb613130723cb8f10ff9"
uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c"
version = "1.2.16"

[[Serialization]]
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"

[[SharedArrays]]
deps = ["Distributed", "Mmap", "Random", "Serialization"]
uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"

[[Sockets]]
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"

[[SortingAlgorithms]]
deps = ["DataStructures", "Random", "Test"]
git-tree-sha1 = "03f5898c9959f8115e30bc7226ada7d0df554ddd"
uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
version = "0.3.1"

[[SparseArrays]]
deps = ["LinearAlgebra", "Random"]
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"

[[SpecialFunctions]]
deps = ["ChainRulesCore", "OpenSpecFun_jll"]
git-tree-sha1 = "5919936c0e92cff40e57d0ddf0ceb667d42e5902"
uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
version = "1.3.0"

[[StackViews]]
deps = ["OffsetArrays"]
git-tree-sha1 = "46e589465204cd0c08b4bd97385e4fa79a0c770c"
uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15"
version = "0.1.1"

[[StaticArrays]]
deps = ["LinearAlgebra", "Random", "Statistics"]
git-tree-sha1 = "2f01a51c23eed210ff4a1be102c4cc8236b66e5b"
uuid = "90137ffa-7385-5640-81b9-e52037218182"
version = "1.1.0"

[[Statistics]]
deps = ["LinearAlgebra", "SparseArrays"]
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"

[[StatsBase]]
deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics"]
git-tree-sha1 = "4bc58880426274277a066de306ef19ecc22a6863"
uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
version = "0.33.5"

[[StatsFuns]]
deps = ["Rmath", "SpecialFunctions"]
git-tree-sha1 = "ced55fd4bae008a8ea12508314e725df61f0ba45"
uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
version = "0.9.7"

[[StructTypes]]
deps = ["Dates", "UUIDs"]
git-tree-sha1 = "63fbaf8345b590161cd0c35b927f88d3f7b2cf75"
uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4"
version = "1.6.0"

[[SuiteSparse]]
deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"]
uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"

[[TFRecord]]
deps = ["BufferedStreams", "CRC32c", "CodecZlib", "ImageCore", "MacroTools", "PNGFiles", "Printf", "ProgressMeter", "ProtoBuf", "Random"]
git-tree-sha1 = "7021a3d2d91e24d7ff7e3a1914826f716de459df"
uuid = "841416d8-1a6a-485a-b0fc-1328d0f53d5e"
version = "0.2.2"

[[TableTraits]]
deps = ["IteratorInterfaceExtensions"]
git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39"
uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c"
version = "1.0.1"

[[Tables]]
deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"]
git-tree-sha1 = "c9d2d262e9a327be1f35844df25fe4561d258dc9"
uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
version = "1.4.2"

[[Test]]
deps = ["Distributed", "InteractiveUtils", "Logging", "Random"]
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[[TimeZones]]
deps = ["Dates", "EzXML", "Mocking", "Pkg", "Printf", "RecipesBase", "Serialization", "Unicode"]
git-tree-sha1 = "4ba8a9579a243400db412b50300cd61d7447e583"
uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53"
version = "1.5.3"

[[TranscodingStreams]]
deps = ["Random", "Test"]
git-tree-sha1 = "7c53c35547de1c5b9d46a4797cf6d8253807108c"
uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa"
version = "0.9.5"

[[UUIDs]]
deps = ["Random", "SHA"]
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"

[[Unicode]]
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"

[[VersionParsing]]
git-tree-sha1 = "80229be1f670524750d905f8fc8148e5a8c4537f"
uuid = "81def892-9a0e-5fdd-b105-ffc91e053289"
version = "1.2.0"

[[WoodburyMatrices]]
deps = ["LinearAlgebra", "SparseArrays"]
git-tree-sha1 = "59e2ad8fd1591ea019a5259bd012d7aee15f995c"
uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6"
version = "0.5.3"

[[XML2_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"]
git-tree-sha1 = "be0db24f70aae7e2b89f2f3092e93b8606d659a6"
uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a"
version = "2.9.10+3"

[[Zlib_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "320228915c8debb12cb434c59057290f0834dbf6"
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
version = "1.2.11+18"

[[Zstd_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "2c1332c54931e83f8f94d310fa447fd743e8d600"
uuid = "3161d3a3-bdf6-5164-811a-617609db77b4"
version = "1.4.8+0"

[[libpng_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"]
git-tree-sha1 = "6abbc424248097d69c0c87ba50fcb0753f93e0ee"
uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f"
version = "1.6.37+6"

[[nghttp2_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "8e2c44ab4d49ad9518f359ed8b62f83ba8beede4"
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
version = "1.40.0+2"

```

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [February 20, 2024, 11:03am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/12 "2024-02-20T11:03:24Z")

</div>

Ok - in that case you can `instantiate` in the directory in which both `Project.toml` and `Manifest.toml` reside and the exact versions in the manifest will be downloaded, see:

[https://pkgdocs.julialang.org/v1/api/#Pkg.instantiate](https://pkgdocs.julialang.org/v1/api/#Pkg.instantiate)

Note that for this to work you want to use the same Julia version which generated the Manifest - if you know this was 1.6 then use 1.6 as I suggested before.

If this script continues to be in use in the company it might be worth spending a day updating it to work with Julia 1.10 and the latest package versions, which might give you some speedups (definitely on latency, maybe even on runtime).

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 20, 2024, 11:12am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/13 "2024-02-20T11:12:52Z")

</div>

Thanks, I am going to do that, I’ll tell you how it goes !

When it comes to upgrading to Julia 1.10, maybe this is something I’ll do toward the end of my internship if I have time (because I’m there for 5 months and have a lot to do) 🙂

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [February 20, 2024, 11:18am UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/14 "2024-02-20T11:18:45Z")

</div>

Just to be sure updating from 1.6 to 1.10 shouldn’t really require any changes, changes come from updating the package versions (where there is a major version bump).

So e.g. your code uses DataFrames 0.22.7, while the current release is 1.6.1. When you update the DataFrames dependency some code might break as syntax might have changed. For some packages this isn’t a problem at all (e.g. MAT is recorded as 0.10.1 in your Manifest, while it resolves to 0.10.6 currently so this should be a non-breaking change).

You can try updating packages one-by-one if you `pin` the remaining dependencies.

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 20, 2024, 1:15pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/15 "2024-02-20T13:15:07Z")

</div>

Ok so I decided to try with uploaded v1.6 and using the `instantiate` method.  
Here is a detailed list of the steps I did :

- I uploaded Julia v1.6, which was the version used to develop the original code.

- I found the `Manifest.toml` on the computer that was used to develop the original code, in the directory containing the code.

- I replaced my `Manifest.toml` by the one I had found on the other computer (I kept the old one in another folder, just in case).

- I opened the Julia REPL (v1.6) by running the `/path/to/Julia-1.6` command in my terminal.

- Once inside the Julia REPL, I changed the directory to the desired location using the `;` command followed by the `cd` command.

- After changing to the desired directory, I ran `using Pkg` and then the `Pkg.instantiate()` command to instantiate the project environment.

The ‘good news’, if I can call it that way, is : The big error message is gone and was replaced by a smaller one. However, I still have an error related to the Julia package LightXML :

> [@New error message](#):
>
> Starting Spike extraction using the julia language  
> Activating environment at `~/Dropbox/Mobs_member/Basile/Code/full_neuroEncoder/neuroEncoders-master/importData/juliaData/Project.toml`  
> /media/nas6/ProjetERC2/Mouse-K199/20210408/\_ConcatenatedI/O error : Is a directory  
> /media/nas6/ProjetERC2/Mouse-K199/20210408/\_Concatenated:1: parser error : Document is empty
> 
> ^  
> ERROR: LoadError: LightXML.XMLParseError{String}(“Failure in parsing an XML file.”)  
> Stacktrace:  
> [1] \_check\_result  
> @ ~/.julia/packages/LightXML/g6rbQ/src/document.jl:88 [inlined]  
> [2] parse\_file(filename::String)  
> @ LightXML ~/.julia/packages/LightXML/g6rbQ/src/document.jl:92  
> [3] extract\_spike\_with\_buffer(xmlPath::String, datPath::String, behavePath::String, fileName::String, datasetName::String, datasetNameSleep::String, BUFFERSIZE::Int64, WINDOWSIZE::Float32)  
> @ Main ~/Dropbox/Mobs\_member/Basile/Code/full\_neuroEncoder/neuroEncoders-master/importData/juliaData/spikeFilter\_withStride.jl:75  
> [4] top-level scope  
> @ ~/Dropbox/Mobs\_member/Basile/Code/full\_neuroEncoder/neuroEncoders-master/importData/juliaData/spikeFilter\_withStride.jl:403  
> in expression starting at /home/mobs/Dropbox/Mobs\_member/Basile/Code/full\_neuroEncoder/neuroEncoders-master/importData/juliaData/spikeFilter\_withStride.jl:403

Isn’t it weird that the instantiate method worked with the other packages but not with this one? I’ll keep trying solving it now that I understand what’s going on a little bit more, but I’m open to any solution 🙂 .

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [February 20, 2024, 1:29pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/16 "2024-02-20T13:29:09Z")

</div>

It looks like all packages have been installed and compiled successfully, you are now seeing an actual runtime error that comes from parsing of an XML file. Probably worth isolating that (i.e. just install `LightXML` in a new environment and try only reading in the XML file you are looking to read in) and make a new thread about that, the CSV issue that this topic is about seems to have been solved.

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 20, 2024, 1:30pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/17 "2024-02-20T13:30:02Z")

</div>

Ok I thought it was probably coming from something else. Thank you very much for your help !!

---

<div class="post-metadata">

**Author:** ![simsurace](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simsurace/32/30216_2.png) [@simsurace](https://discourse.julialang.org/u/simsurace)\
**Post date:** [February 20, 2024, 1:31pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/18 "2024-02-20T13:31:35Z")

</div>

It is not clear from your explanation whether you activated the project you `cd`’d to before instantiating it. Just want to make sure that you are in the local environment for the code you are trying to run, using the local Project.toml and Manifest.toml, rather than the global Julia 1.6 environment. You can double check by hitting `]` and seeing the environment name in the prompt.

---

<div class="post-metadata">

**Author:** ![snipick19](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snipick19/32/207131_2.png) [@snipick19](https://discourse.julialang.org/u/snipick19)\
**Post date:** [February 20, 2024, 1:38pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/19 "2024-02-20T13:38:05Z")

</div>

Oh, you’re right, I was in fact in the global Julia 1.6 environment. But I don’t understand, why did it work then ?  
Besides I tried running `pkg> activate` and still ended up in the global Julia1.6 environment…

EDIT : Sorry I should try more before posting : I was able to activate the local environment manually with the commands `using Pkg` and `Pkg.activate("/path/to/localproject")`. And then I ran the `Pkg.instantiate()` command again.  
However to be honest, I don’t really see the advantage compared to what I did before since the problem had somehow been resolved but I guess it’s always better when things are done the most proper way.

---

<div class="post-metadata">

**Author:** ![simsurace](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simsurace/32/30216_2.png) [@simsurace](https://discourse.julialang.org/u/simsurace)\
**Post date:** [February 22, 2024, 2:24pm UTC](https://discourse.julialang.org/t/issues-with-the-csv-package/110412/20 "2024-02-22T14:24:22Z")

</div>

You can do `]activate .` when you are in the right folder. As you wanted to instantiate a previously resolved Manifest file, that‘s what you should be doing. Somehow you managed to install the dependencies in the global environment previously. I recommend you remove packages from the global environment, as it will be stacked underneath any other environment. Best practice is to keep the global environment to only a few developer tooling packages.
